【Docker】docker的基本使用方法
- 鏡像image與容器container的關系
- 基本命令
- - 查看 Docker 版本
- - 拉取鏡像
- - 查看系統中的鏡像
- - 刪除某個鏡像
- - 列出當前 Docker 主機上的所有容器,包括正在運行的、暫停的、已停止的,以及未運行的容器
- - 列出當前 Docker 主機上的正在運行的容器
- - 進入正在運行的容器
- - 退出容器
- - 刪除容器
- - 使用 docker start 命令后跟容器 ID 或名稱來啟動容器
- - 停止正在運行的容器
- - 啟動docker服務
- - 停止docker服務
- - 重啟docker服務
- - 檢查docker服務狀態
- - 將本地文件或環境復制到docker容器中(需要先退出容器 ctrl + d)
- - 根據容器創建鏡像
- - 將鏡像保存為壓縮包
- - 加載鏡像
- 參考文獻
鏡像image與容器container的關系
- 鏡像是模板:Docker 鏡像是一個輕量級、可執行的軟件包,包含了運行一個應用程序所需的代碼、運行時、庫、環境變量和配置文件。鏡像可以看作是容器的模板,用于創建容器的實例。
- 鏡像可以創建多個容器:同一個 Docker 鏡像可以用于創建多個獨立的容器實例。每個容器都有自己的文件系統、網絡設置、環境變量等,彼此之間是隔離的。
- 容器是鏡像的運行實例:當運行一個 Docker 鏡像時,Docker 會創建一個容器,這是鏡像的沙盒實例。容器是隔離的、安全的,并且是可移植的
- 安裝了Docker的機器是宿主機,在容器內的代碼不會受到宿主機環境的影響
- 配置好的容器可以打包成鏡像,可以快速迭代,方便二次開發
優點:
- 輕量級和高效:Docker容器共享宿主機的操作系統內核,因此不需要像虛擬機那樣復制整個操作系統,這使得容器比虛擬機更加輕量和高效
- 可移植性:Docker容器可以在任何支持Docker的系統上運行,無論是開發環境、測試環境還是生產環境,都能保證一致,eg.別人的環境打包好鏡像,我們拿到鏡像后不用配置環境,根據該鏡像生成容器就可以直接在容器里運行程序
- 隔離性:每個容器都是相互隔離的,擁有自己的文件系統,并且運行在獨立的網絡環境中。這有助于防止應用之間的沖突
基本命令
- 查看 Docker 版本
sudo docker --version
- 拉取鏡像
Docker Hub 是 Docker 官方提供的公共鏡像倉庫,可在此鏈接中尋找需要的鏡像并拉取到本地,其中會提供拉取鏡像的命令
sudo docker pull [OPTIONS] 鏡像名:TAG(不輸入tag則默認拉取最新版,默認TAG是latest)
- 查看系統中的鏡像
sudo docker images
- 刪除某個鏡像
sudo docker rmi 鏡像ID或鏡像名:tag
- 列出當前 Docker 主機上的所有容器,包括正在運行的、暫停的、已停止的,以及未運行的容器
sudo docker ps -a
- 列出當前 Docker 主機上的正在運行的容器
sudo docker ps
- 根據鏡像創建一個新的容器
-d:以 detached 模式運行容器,即在后臺運行
-t:分配一個偽終端,通常與 -i 一起使用,使得可以與容器進行交互
-i:保持容器的標準輸入(STDIN)打開,即使不附加到終端
當使用 -d 參數時,容器會在后臺運行,不會阻塞當前的命令行或終端會話。如果想啟動一個交互式的會話,或者想要進入正在運行的容器,可以使用 docker exec 命令
要實現容器一被創建就自動運行,您需要在 docker run 命令中使用 -d(detached 模式)選項。這個選項允許容器在后臺運行,即不與當前的命令行或終端會話交互
sudo docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
eg. sudo docker run -d --name my_container(容器名) my_image(鏡像名:tag)sudo docker run --name 容器名 -idt 鏡像名:tag
- 進入正在運行的容器
sudo docker exec -it 容器名 /bin/bash
這里的 -it 參數與 docker run 中的相同,/bin/bash 是您希望在容器內部啟動的 shell
- 退出容器
ctrl + d
- 刪除容器
sudo docker rm container_name_or_id
- 使用 docker start 命令后跟容器 ID 或名稱來啟動容器
sudo docker start CONTAINER_ID_OR_NAME
- 停止正在運行的容器
sudo docker stop container_name_or_id
- 啟動docker服務
sudo systemctl start docker
- 停止docker服務
sudo systemctl stop docker
- 重啟docker服務
sudo systemctl restart docker
- 檢查docker服務狀態
sudo systemctl status docker
- 將本地文件或環境復制到docker容器中(需要先退出容器 ctrl + d)
sudo docker cp /本地路徑 容器名:/目標路徑
eg. sudo docker cp /home/b/miniconda3/envs/yolo1.7 test:/opt/conda/envs
- 根據容器創建鏡像
repository_name:tag 是為新鏡像指定的名稱和標簽
在使用 docker commit 從容器創建鏡像之前,通常需要確保容器已經停止運行
sudo docker commit [OPTIONS] CONTAINER_ID或容器名稱 [REPOSITORY[:TAG]]
eg. sudo docker commit -a '作者' -m '提交說明' test image_test
-a 或 --author:設置鏡像的作者字段,后面跟著作者的名字或郵箱
-m 或 --message:提交時的說明信息,通常用來描述鏡像的內容或用途
- 將鏡像保存為壓縮包
sudo docker save --output my_image.tar my_image:my_tag
eg.sudo docker save -o test_tar.tar image_test
my_image:my_tag 是您要導出的鏡像的名稱和標簽。如果未指定標簽,將默認使用 latest
- 加載鏡像
sudo docker load --input my_image.tar
sudo docker load -i test_tar.tar
參考文獻
- Docker封裝anaconda環境,生成鏡像并打包,純小白一文讀懂(二)