基礎(chǔ)命令
Docker 是一種流行的容器化平臺,允許開發(fā)人員在隔離的環(huán)境中構(gòu)建、打包、發(fā)布和運行應(yīng)用程序。下面是一些 Docker 的基礎(chǔ)命令:
-
docker version
:檢查 Docker 版本信息。 -
docker info
:顯示 Docker 系統(tǒng)信息,如運行的容器數(shù)量和鏡像數(shù)量等。 -
docker search <image>
:搜索 Docker Hub 上的鏡像。 -
docker pull <image>
:從 Docker Hub 下載鏡像。 -
docker images
:列出本地已下載的鏡像。 -
docker run <image>
:在容器中運行一個鏡像,例如docker run hello-world
。 -
docker ps
:列出正在運行的容器。 -
docker stop <container>
:停止一個正在運行的容器,其中<container>
可以是容器的 ID 或名稱。 -
docker rm <container>
:刪除一個已停止的容器。 -
docker rmi <image>
:刪除一個本地的鏡像。 -
docker build -t <tag> <directory>
:構(gòu)建一個鏡像,-t
選項用于指定標(biāo)簽(tag),<directory>
是包含 Dockerfile 的目錄。 -
docker run -p <host-port>:<container-port> <image>
:運行容器,并將容器的端口映射到主機的端口。 -
docker exec -it <container> <command>
:在正在運行的容器中執(zhí)行命令,-it
選項用于進入交互模式。 -
docker logs <container>
:查看容器的日志輸出。 -
docker cp <container>:<path> <host-path>
:將容器內(nèi)的文件復(fù)制到主機上。 -
docker network ls
:列出 Docker 網(wǎng)絡(luò)。 -
docker network create <network>
:創(chuàng)建一個 Docker 網(wǎng)絡(luò)。 -
docker volume ls
:列出 Docker 數(shù)據(jù)卷。 -
docker volume create <volume>
:創(chuàng)建一個 Docker 數(shù)據(jù)卷。
組合命令
Docker 提供了一些組合命令,可以通過組合多個單個命令來完成更復(fù)雜的操作。下面是一些常見的 Docker 組合命令及其作用:
- 創(chuàng)建并運行容器:
docker run -d --name mycontainer <image> <command>
這個命令會創(chuàng)建一個新的容器,并在容器中運行指定的命令。-d
選項表示容器以后臺模式運行,--name
選項指定容器的名稱。
2. 構(gòu)建鏡像并運行容器:
docker build -t myimage <directory> && docker run -d --name mycontainer myimage
這個命令會先構(gòu)建一個鏡像,然后在新構(gòu)建的鏡像上運行一個容器。&&
操作符用于串聯(lián)兩個命令,確保只有在鏡像構(gòu)建成功后才會運行容器。
3. 運行容器并進入交互模式:
docker run -it <image> <command>
這個命令會在容器中以交互模式運行指定的命令,并將終端連接到容器的標(biāo)準(zhǔn)輸入輸出。
4. 運行容器并掛載本地目錄:
docker run -v <host-path>:<container-path> <image>
這個命令會運行容器,并將主機上的指定目錄掛載到容器的指定路徑,實現(xiàn)主機和容器之間的文件共享。
5. 停止并刪除所有容器:
docker stop $(docker ps -aq) && docker rm $(docker ps -aq)
這個命令會停止并刪除所有正在運行的容器。docker ps -aq
用于列出所有容器的 ID,并將其作為參數(shù)傳遞給 docker stop
和 docker rm
命令。
6. 刪除所有鏡像:
docker rmi $(docker images -q)
這個命令會刪除所有本地的鏡像。docker images -q
用于列出所有鏡像的 ID,并將其作為參數(shù)傳遞給 docker rmi
命令。
7. 構(gòu)建鏡像并將其推送到 Docker Hub:
docker build -t <image> <directory> && docker push <image>
這個命令會先構(gòu)建一個鏡像,然后將該鏡像推送到 Docker Hub,使其可供他人訪問和使用。
8. 停止并刪除所有容器,并刪除所有鏡像:
docker stop $(docker ps -aq) && docker rm $(docker ps -aq) && docker rmi $(docker images -q)
這個命令會停止并刪除所有正在運行的容器,然后刪除所有本地的鏡像。
9. 運行容器并與主機共享網(wǎng)絡(luò)命名空間:
docker run -it --net=host <image> <command>
這個命令會在容器中運行指定的命令,并與主機共享網(wǎng)絡(luò)命名空間,使容器可以直接訪問主機上的網(wǎng)絡(luò)接口。
10. 運行容器并設(shè)置環(huán)境變量:
docker run -e <key>=<value> <image>
這個命令會在容器中運行,并設(shè)置一個或多個環(huán)境變量,以便應(yīng)用程序在容器內(nèi)部使用。
11. 在容器內(nèi)部執(zhí)行命令并將結(jié)果復(fù)制到主機:
docker exec <container> <command> > <host-path>
這個命令會在正在運行的容器內(nèi)部執(zhí)行指定的命令,并將命令的輸出復(fù)制到主機上的指定路徑。
12. 如果您要刪除沒有鏡像名稱(即沒有標(biāo)簽)的鏡像,可以使用以下命令:
docker image prune -a
這個命令將刪除所有沒有標(biāo)簽的鏡像,包括沒有關(guān)聯(lián)容器的無標(biāo)簽鏡像。這將釋放磁盤空間并清理不再需要的鏡像。請注意,在執(zhí)行此命令之前,請確保您不再需要這些沒有標(biāo)簽的鏡像。
13. 要刪除懸空鏡像(即沒有關(guān)聯(lián)的容器的鏡像),可以使用以下命令:
docker image prune
這個命令會刪除所有沒有被使用的鏡像,釋放磁盤空間。請注意,這將刪除所有沒有關(guān)聯(lián)容器的鏡像,包括不再使用的舊鏡像。在執(zhí)行此命令之前,請確保您不需要這些鏡像,以免意外刪除了需要的鏡像。
在 Docker 中,有一些常用的組合命令可以幫助您更高效地管理容器、鏡像和其他資源。以下是一些常見的 Docker 組合命令:
-
清理命令:
- 停止并刪除所有容器,并刪除所有鏡像:
docker stop $(docker ps -aq) && docker rm $(docker ps -aq) && docker rmi $(docker images -q)
- 刪除所有懸空的容器(沒有關(guān)聯(lián)的鏡像):
docker container prune
- 停止并刪除所有容器,并刪除所有鏡像:
-
構(gòu)建和運行命令:
- 構(gòu)建鏡像并運行容器:
docker build -t <image> <directory> && docker run -d --name <container> <image>
- 構(gòu)建鏡像并運行容器,并映射端口:
docker build -t <image> <directory> && docker run -d --name <container> -p <host-port>:<container-port> <image>
- 構(gòu)建鏡像并運行容器:
-
數(shù)據(jù)卷命令:
- 創(chuàng)建容器并掛載數(shù)據(jù)卷:
docker run -v <host-path>:<container-path> <image>
- 運行容器并掛載匿名數(shù)據(jù)卷:
docker run -v <container-path> <image>
- 創(chuàng)建和管理數(shù)據(jù)卷:
docker volume create <volume> # 創(chuàng)建數(shù)據(jù)卷 docker volume ls # 列出數(shù)據(jù)卷 docker volume inspect <volume> # 查看數(shù)據(jù)卷詳細(xì)信息 docker volume rm <volume> # 刪除數(shù)據(jù)卷
- 創(chuàng)建容器并掛載數(shù)據(jù)卷:
-
網(wǎng)絡(luò)命令:
- 創(chuàng)建自定義網(wǎng)絡(luò):
docker network create <network>
- 運行容器并連接到指定網(wǎng)絡(luò):
docker run --network=<network> <image>
- 列出網(wǎng)絡(luò):
docker network ls
- 創(chuàng)建自定義網(wǎng)絡(luò):
docker inspect
命令可以與其他命令組合使用來獲取更豐富的容器信息或進行更復(fù)雜的操作。以下是一些常見的與 docker inspect
命令組合使用的命令:
-
docker inspect
+jq
:-
jq
是一個命令行 JSON 處理工具,可以用于過濾和提取 JSON 數(shù)據(jù)。 - 示例:
docker inspect <container> | jq .[0].NetworkSettings.IPAddress
- 這個示例使用
jq
過濾器來提取容器的 IP 地址。
-
-
docker inspect
+grep
:-
grep
是一個文本搜索工具,用于在輸出中匹配特定的模式。 - 示例:
docker inspect <container> | grep IPAddress
- 這個示例使用
grep
過濾器來查找容器的 IP 地址。
-
-
docker inspect
+awk
:-
awk
是一個文本處理工具,可用于對輸出進行分割和提取特定字段。 - 示例:
docker inspect <container> | awk -F'"' '/IPAddress/ {print $4}'
- 這個示例使用
awk
提取容器的 IP 地址。
-
-
docker inspect
+ shell 變量:- 將
docker inspect
的輸出賦值給 shell 變量,以便進一步處理和使用。 - 示例:
CONTAINER_INFO=$(docker inspect <container>) echo $CONTAINER_INFO
- 將
容器運行
當(dāng)運行容器時,可以使用一些基本配置選項來自定義容器的行為和環(huán)境。以下是一些常用的基本配置選項及其說明:
-
容器名稱:
-
--name <name>
:指定容器的名稱,用于識別和操作容器。例如:--name mycontainer
-
-
后臺運行:
-
-d
或--detach
:以后臺模式運行容器,使其在后臺運行而不阻塞終端。例如:-d
-
-
端口映射:
-
-p <host-port>:<container-port>
:將容器的端口映射到主機的端口,使外部可以訪問容器中的服務(wù)。例如:-p 8080:80
-
-P
或--publish-all
:自動將容器中的所有端口映射到主機的隨機端口。
-
-
環(huán)境變量:
-
-e <key>=<value>
:設(shè)置容器中的環(huán)境變量。例如:-e ENV_VAR=example
-
-
數(shù)據(jù)卷掛載:
-
-v <host-path>:<container-path>
:將主機的目錄或文件掛載到容器的指定路徑,實現(xiàn)主機和容器之間的文件共享。例如:-v /path/on/host:/path/on/container
-
-
工作目錄:
-
-w <path>
:設(shè)置容器的工作目錄。例如:-w /app
-
-
用戶和權(quán)限:
-
-u <user>[:<group>]
:指定容器內(nèi)部的用戶或用戶組。例如:-u 1000:1000
-
-
網(wǎng)絡(luò)連接:
-
--network <network>
:將容器連接到指定的 Docker 網(wǎng)絡(luò)。例如:--network mynetwork
-
-
交互模式:
-
-i
或--interactive
:保持標(biāo)準(zhǔn)輸入 (stdin) 打開,允許與容器進行交互。 -
-t
或--tty
:分配一個偽終端 (TTY)。
-
這些是一些常用的容器運行配置選項。請注意,<name>
、<host-port>
、<container-port>
、<key>
、<value>
、<host-path>
、<container-path>
、<path>
、<user>
、<group>
和 <network>
是需要根據(jù)實際情況替換為具體值的參數(shù)。
Docker問題排查
在 Docker 運行時,可能會遇到一些常見的問題。以下是一些常用的問題排查方法和命令:
-
查看容器狀態(tài):
- 使用
docker ps
命令查看正在運行的容器。 - 如果容器沒有正常運行,可以使用
docker ps -a
命令查看所有容器的狀態(tài),包括已停止的容器。
- 使用
-
查看容器日志:
- 使用
docker logs <container>
命令查看容器的日志輸出。<container>
可以是容器的 ID 或名稱。 - 添加
-f
選項可以實時跟蹤容器的日志輸出。
- 使用
-
進入容器進行調(diào)試:
- 使用
docker exec -it <container> <command>
命令進入正在運行的容器,并在容器內(nèi)部執(zhí)行特定的命令。這樣可以進入容器進行調(diào)試和排查問題。 - 例如:
docker exec -it <container> bash
或docker exec -it <container> sh
進入容器的交互終端。
- 使用
-
檢查容器配置:
- 使用
docker inspect <container>
命令查看容器的詳細(xì)配置信息,包括網(wǎng)絡(luò)設(shè)置、環(huán)境變量、掛載的卷等。
- 使用
-
檢查容器資源占用:
- 使用
docker stats
命令查看正在運行的容器的資源占用情況,包括 CPU、內(nèi)存、網(wǎng)絡(luò)和磁盤使用情況。
- 使用
-
重啟容器或 Docker 服務(wù):
- 如果容器出現(xiàn)問題,嘗試重啟容器或 Docker 服務(wù),可能會解決一些常見的問題。
- 使用
docker restart <container>
命令重啟容器。 - 使用
sudo systemctl restart docker
命令(Linux)或重新啟動 Docker Desktop(Windows 或 macOS)來重啟 Docker 服務(wù)。
-
查看 Docker 服務(wù)狀態(tài):文章來源:http://www.zghlxwxcb.cn/news/detail-532776.html
- 使用
sudo systemctl status docker
命令(Linux)或查看 Docker Desktop(Windows 或 macOS)的狀態(tài)來檢查 Docker 服務(wù)是否正常運行。
- 使用
-
清理無用資源:文章來源地址http://www.zghlxwxcb.cn/news/detail-532776.html
- 使用
docker system prune
命令清理無用的容器、鏡像和數(shù)據(jù)卷等,以釋放磁盤空間。
- 使用
到了這里,關(guān)于Docker 命令和組合操作指南的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!