docker
描述 | Docker CLI 的基本命令。 |
---|
描述
根據您的 Docker 系統配置,您可能需要在每個 docker
命令前加上 sudo
。為避免在使用 docker
命令時不得不使用 sudo
,您的系統管理員可以建立一個名為 docker
的 Unix 組並將使用者新增到其中。
有關安裝 Docker 或 sudo
配置的更多資訊,請參閱您作業系統的安裝說明。
顯示幫助文字
要列出任何命令的幫助,只需執行該命令,後跟 --help
選項。
$ docker run --help
Usage: docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
Create and run a new container from an image
Options:
--add-host value Add a custom host-to-IP mapping (host:ip) (default [])
-a, --attach value Attach to STDIN, STDOUT or STDERR (default [])
<...>
環境變數
docker
命令列支援以下環境變數
變數 | 描述 |
---|---|
DOCKER_API_VERSION | 覆蓋協商的 API 版本以用於除錯(例如 1.19 ) |
DOCKER_CERT_PATH | 您的身份驗證金鑰的位置。此變數由 docker CLI 和 dockerd 守護程式使用 |
DOCKER_CONFIG | 您的客戶端配置檔案位置。 |
DOCKER_CONTENT_TRUST_SERVER | 要使用的公證伺服器的 URL。預設為與登錄檔相同的 URL。 |
DOCKER_CONTENT_TRUST | 當設定時,Docker 使用公證服務來簽署和驗證映象。等同於構建、建立、拉取、推送、執行的 --disable-content-trust=false 。 |
DOCKER_CONTEXT | 要使用的 docker context 名稱(覆蓋 DOCKER_HOST 環境變數和使用 docker context use 設定的預設上下文) |
DOCKER_CUSTOM_HEADERS | (實驗性)配置客戶端傳送的自定義 HTTP 頭。頭必須以逗號分隔的 name=value 對列表形式提供。這等同於配置檔案中的 HttpHeaders 欄位。 |
DOCKER_DEFAULT_PLATFORM | 接受 --platform 標誌的命令的預設平臺。 |
DOCKER_HIDE_LEGACY_COMMANDS | 當設定時,Docker 在 docker help 輸出中隱藏“傳統”頂級命令(例如 docker rm 和 docker pull ),並且只打印每個物件型別的 Management commands (例如 docker container )。這可能會在未來版本中成為預設設定。 |
DOCKER_HOST | 要連線的守護程式套接字。 |
DOCKER_TLS | 為 docker CLI 建立的連線啟用 TLS(等同於 --tls 命令列選項)。設定為非空值以啟用 TLS。請注意,如果設定了任何其他 TLS 選項,TLS 會自動啟用。 |
DOCKER_TLS_VERIFY | 當設定時,Docker 使用 TLS 並驗證遠端。此變數由 docker CLI 和 dockerd 守護程式使用 |
BUILDKIT_PROGRESS | 使用 BuildKit 後端構建時設定進度輸出型別(auto 、plain 、tty 、rawjson )。使用 plain 顯示容器輸出(預設 auto )。 |
由於 Docker 是使用 Go 開發的,您也可以使用 Go 執行時使用的任何環境變數。特別是,您可能會發現以下這些很有用
變數 | 描述 |
---|---|
HTTP_PROXY | 除非被 NoProxy 覆蓋,否則用於 HTTP 請求的代理 URL。 |
HTTPS_PROXY | 除非被 NoProxy 覆蓋,否則用於 HTTPS 請求的代理 URL。 |
NO_PROXY | 逗號分隔的值,指定應從代理中排除的主機。 |
有關這些變數的詳細資訊,請參閱 Go 規範。
選項型別
單字元命令列選項可以組合,所以與其輸入 docker run -i -t --name test busybox sh
,不如寫成 docker run -it --name test busybox sh
。
布林值
布林選項的形式為 -d=false
。您在幫助文字中看到的值是預設值,如果您**不**指定該標誌,則會設定該預設值。如果您在沒有值的情況下指定布林標誌,這將把該標誌設定為 true
,而不考慮預設值。
例如,執行 docker run -d
將把值設定為 true
,因此您的容器**將**在“分離”模式下在後臺執行。
預設為 true
的選項(例如,docker build --rm=true
)只能透過明確將其設定為 false
來設定為非預設值
$ docker build --rm=false .
多值
您可以在單個命令列中多次指定像 -a=[]
這樣的選項,例如在這些命令中
$ docker run -a stdin -a stdout -i -t ubuntu /bin/bash
$ docker run -a stdin -a stdout -a stderr ubuntu /bin/ls
有時,多個選項可能需要更復雜的字串值,例如 -v
$ docker run -v /host:/container example/mysql
注意由於
pty
實現的限制,請勿同時使用-t
和-a stderr
選項。在pty
模式下,所有stderr
都直接輸出到stdout
。
字串和整數
像 --name=""
這樣的選項期望一個字串,並且只能指定一次。像 -c=0
這樣的選項期望一個整數,並且只能指定一次。
配置檔案
預設情況下,Docker 命令列將其配置檔案儲存在 $HOME
目錄中名為 .docker
的目錄中。
Docker 管理配置目錄中的大部分檔案,您不應該修改它們。但是,您可以修改 config.json
檔案來控制 docker
命令列為的某些方面。
您可以使用環境變數或命令列選項修改 docker
命令的行為。您也可以使用 config.json
中的選項來修改一些相同的行為。如果設定了環境變數和 --config
標誌,則該標誌優先於環境變數。命令列選項會覆蓋環境變數,而環境變數會覆蓋您在 config.json
檔案中指定的屬性。
更改 .docker
目錄
要指定不同的目錄,請使用 DOCKER_CONFIG
環境變數或 --config
命令列選項。如果兩者都指定,則 --config
選項會覆蓋 DOCKER_CONFIG
環境變數。以下示例使用位於 ~/testconfigs/
目錄中的 config.json
檔案覆蓋 docker ps
命令。
$ docker --config ~/testconfigs/ ps
此標誌僅適用於正在執行的任何命令。對於持久配置,您可以在 shell 中設定 DOCKER_CONFIG
環境變數(例如 ~/.profile
或 ~/.bashrc
)。以下示例將新目錄設定為 HOME/newdir/.docker
。
$ echo export DOCKER_CONFIG=$HOME/newdir/.docker > ~/.profile
Docker CLI 配置檔案 (config.json
) 屬性
使用 Docker CLI 配置來自定義 docker
CLI 的設定。配置檔案使用 JSON 格式和屬性。
預設情況下,配置檔案儲存在 ~/.docker/config.json
中。請參閱更改 .docker
目錄部分以使用不同的位置。
警告配置檔案和
~/.docker
配置目錄中的其他檔案可能包含敏感資訊,例如代理的身份驗證資訊,或者根據您的憑據儲存,包含您的映象登錄檔的憑據。在與他人共享之前,請仔細檢查您的配置檔案內容,並避免將檔案提交到版本控制。
自定義命令的預設輸出格式
如果未提供 --format
標誌,這些欄位允許您自定義某些命令的預設輸出格式。
屬性 | 描述 |
---|---|
configFormat | docker config ls 輸出的自定義預設格式。有關支援的格式化指令列表,請參閱 docker config ls 。 |
imagesFormat | docker images / docker image ls 輸出的自定義預設格式。有關支援的格式化指令列表,請參閱 docker images 。 |
networksFormat | docker network ls 輸出的自定義預設格式。有關支援的格式化指令列表,請參閱 docker network ls 。 |
nodesFormat | docker node ls 輸出的自定義預設格式。有關支援的格式化指令列表,請參閱 docker node ls 。 |
pluginsFormat | docker plugin ls 輸出的自定義預設格式。有關支援的格式化指令列表,請參閱 docker plugin ls 。 |
psFormat | docker ps / docker container ps 輸出的自定義預設格式。有關支援的格式化指令列表,請參閱 docker ps 。 |
secretFormat | docker secret ls 輸出的自定義預設格式。有關支援的格式化指令列表,請參閱 docker secret ls 。 |
serviceInspectFormat | docker service inspect 輸出的自定義預設格式。有關支援的格式化指令列表,請參閱 docker service inspect 。 |
servicesFormat | docker service ls 輸出的自定義預設格式。有關支援的格式化指令列表,請參閱 docker service ls 。 |
statsFormat | docker stats 輸出的自定義預設格式。有關支援的格式化指令列表,請參閱 docker stats 。 |
tasksFormat | docker stack ps 輸出的自定義預設格式。有關支援的格式化指令列表,請參閱 docker stack ps 。 |
volumesFormat | docker volume ls 輸出的自定義預設格式。有關支援的格式化指令列表,請參閱 docker volume ls 。 |
自定義 HTTP 頭
屬性 HttpHeaders
指定了一組要包含在所有從 Docker 客戶端傳送到守護程序的訊息中的頭。Docker 不會嘗試解釋或理解這些頭;它只是將它們放入訊息中。Docker 不允許這些頭改變它自己設定的任何頭。
或者,使用 DOCKER_CUSTOM_HEADERS
環境變數,該變數在 v27.1 及更高版本中可用。此環境變數是實驗性的,其確切行為可能會改變。
憑據儲存選項
屬性 credsStore
指定了一個外部二進位制檔案作為預設的憑據儲存。當設定此屬性時,docker login
將嘗試將憑據儲存在 $PATH
可見的 docker-credential-<value>
指定的二進位制檔案中。如果未設定此屬性,憑據將儲存在 CLI 配置檔案的 auths
屬性中。有關更多資訊,請參閱 docker login
文件中的**憑據儲存**部分
屬性 credHelpers
指定了一組憑證助手,在儲存和檢索特定登錄檔的憑證時,優先使用這些助手而不是 credsStore
或 auths
。如果設定了此屬性,當儲存或檢索特定登錄檔的憑證時,將使用二進位制檔案 docker-credential-<value>
。有關更多資訊,請參閱 docker login
文件中的**憑證助手**部分
容器的自動代理配置
屬性 proxies
指定了要自動在容器上設定的代理環境變數,並在 docker build
期間用作容器上的 --build-arg
。可以配置一組 "default"
代理,並將其用於客戶端連線到的任何 Docker 守護程式,或者為每個主機(Docker 守護程式)配置,例如 https://docker-daemon1.example.com
。可以為每個環境設定以下屬性
屬性 | 描述 |
---|---|
httpProxy | 容器的 HTTP_PROXY 和 http_proxy 的預設值,以及 docker build 上的 --build-arg |
httpsProxy | 容器的 HTTPS_PROXY 和 https_proxy 的預設值,以及 docker build 上的 --build-arg |
ftpProxy | 容器的 FTP_PROXY 和 ftp_proxy 的預設值,以及 docker build 上的 --build-arg |
noProxy | 容器的 NO_PROXY 和 no_proxy 的預設值,以及 docker build 上的 --build-arg |
allProxy | 容器的 ALL_PROXY 和 all_proxy 的預設值,以及 docker build 上的 --build-arg |
這些設定僅用於配置容器的代理設定,而不是用於 docker
CLI 或 dockerd
守護程式的代理設定。有關配置 CLI 和守護程式的代理設定,請參閱環境變數和HTTP/HTTPS 代理部分。
警告代理設定可能包含敏感資訊(例如,如果代理需要身份驗證)。環境變數以純文字形式儲存在容器的配置中,因此可以透過遠端 API 進行檢查,或者在使用
docker commit
時提交到映象。
從容器分離的預設按鍵序列
一旦連線到容器,使用者可以使用 CTRL-p CTRL-q
組合鍵序列從容器分離並使其繼續執行。此分離鍵序列可以透過 detachKeys
屬性進行自定義。為該屬性指定一個 <sequence>
值。<sequence>
的格式是逗號分隔的字母 [a-Z] 列表,或 ctrl-
與以下任何一項的組合
a-z
(單個小寫字母字元)@
(at 符號)[
(左括號)\\
(兩個反斜槓)_
(下劃線)^
(插入符)
您的自定義設定適用於所有使用 Docker 客戶端啟動的容器。使用者可以按容器覆蓋您的自定義或預設鍵序列。為此,使用者使用 docker attach
、docker exec
、docker run
或 docker start
命令指定 --detach-keys
標誌。
CLI 外掛選項
屬性 plugins
包含特定於 CLI 外掛的設定。鍵是外掛名稱,值是進一步的選項對映,這些選項是特定於該外掛的。
示例配置檔案
以下是一個示例 config.json
檔案,用於說明各種欄位使用的格式
{
"HttpHeaders": {
"MyHeader": "MyValue"
},
"psFormat": "table {{.ID}}\\t{{.Image}}\\t{{.Command}}\\t{{.Labels}}",
"imagesFormat": "table {{.ID}}\\t{{.Repository}}\\t{{.Tag}}\\t{{.CreatedAt}}",
"pluginsFormat": "table {{.ID}}\t{{.Name}}\t{{.Enabled}}",
"statsFormat": "table {{.Container}}\t{{.CPUPerc}}\t{{.MemUsage}}",
"servicesFormat": "table {{.ID}}\t{{.Name}}\t{{.Mode}}",
"secretFormat": "table {{.ID}}\t{{.Name}}\t{{.CreatedAt}}\t{{.UpdatedAt}}",
"configFormat": "table {{.ID}}\t{{.Name}}\t{{.CreatedAt}}\t{{.UpdatedAt}}",
"serviceInspectFormat": "pretty",
"nodesFormat": "table {{.ID}}\t{{.Hostname}}\t{{.Availability}}",
"detachKeys": "ctrl-e,e",
"credsStore": "secretservice",
"credHelpers": {
"awesomereg.example.org": "hip-star",
"unicorn.example.com": "vcbait"
},
"plugins": {
"plugin1": {
"option": "value"
},
"plugin2": {
"anotheroption": "anothervalue",
"athirdoption": "athirdvalue"
}
},
"proxies": {
"default": {
"httpProxy": "http://user:pass@example.com:3128",
"httpsProxy": "https://my-proxy.example.com:3129",
"noProxy": "intra.mycorp.example.com",
"ftpProxy": "http://user:pass@example.com:3128",
"allProxy": "socks://example.com:1234"
},
"https://manager1.mycorp.example.com:2377": {
"httpProxy": "http://user:pass@example.com:3128",
"httpsProxy": "https://my-proxy.example.com:3129"
}
}
}
實驗性功能
實驗性功能提供對未來產品功能的早期訪問。這些功能旨在用於測試和反饋,它們可能會在版本之間未經警告而更改,或者可能會從未來版本中刪除。
從 Docker 20.10 開始,實驗性 CLI 功能預設啟用,無需任何配置即可啟用。
公證人
如果使用自己的公證伺服器和自簽名證書或內部證書頒發機構,則需要將證書放置在 Docker 配置目錄中的 tls/<registry_url>/ca.crt
。
或者,您可以透過將其新增到系統的根證書頒發機構列表來全域性信任該證書。
選項
選項 | 預設值 | 描述 |
---|---|---|
--config | /root/.docker | 客戶端配置檔案位置 |
-c, --context | 用於連線守護程序的上下文名稱(覆蓋 DOCKER_HOST 環境變數和使用 docker context use 設定的預設上下文) | |
-D, --debug | 啟用除錯模式 | |
-H, --host | 要連線的守護程式套接字 | |
-l, --log-level | 資訊 | 設定日誌級別(debug 、info 、warn 、error 、fatal ) |
--tls | 使用 TLS;由 --tlsverify 暗示 | |
--tlscacert | /root/.docker/ca.pem | 僅信任由該 CA 簽名的證書 |
--tlscert | /root/.docker/cert.pem | TLS 證書檔案路徑 |
--tlskey | /root/.docker/key.pem | TLS 金鑰檔案路徑 |
--tlsverify | 使用 TLS 並驗證遠端 |
示例
指定守護程序主機 (-H, --host)
您可以使用 -H
、--host
標誌來指定在呼叫 docker
命令時要使用的套接字。您可以使用以下協議
方案 | 描述 | 示例 |
---|---|---|
unix://[<路徑>] | Unix 套接字(僅限 Linux) | unix:///var/run/docker.sock |
tcp://[<IP 或主機>[:埠]] | TCP 連線 | tcp://174.17.0.1:2376 |
ssh://[使用者名稱@]<IP 或主機>[:埠] | SSH 連線 | ssh://user@192.168.64.5 |
npipe://[<名稱>] | 命名管道(僅限 Windows) | npipe:////./pipe/docker_engine |
如果您沒有指定 -H
標誌,並且您沒有使用自定義上下文,命令將使用以下預設套接字
- macOS 和 Linux 上的
unix:///var/run/docker.sock
- Windows 上的
npipe:////./pipe/docker_engine
為了達到類似的效果而無需為每個命令指定 -H
標誌,您還可以建立上下文,或者,使用DOCKER_HOST
環境變數。
有關 -H
標誌的更多資訊,請參閱守護程序套接字選項。
使用 TCP 套接字
以下示例演示如何透過 TCP 呼叫 docker ps
,連線到 IP 地址為 174.17.0.1
且在埠 2376
上偵聽的遠端守護程序
$ docker -H tcp://174.17.0.1:2376 ps
注意按照慣例,Docker 守護程式使用埠
2376
進行安全的 TLS 連線,使用埠2375
進行不安全的非 TLS 連線。
使用 SSH 套接字
當您使用 SSH 在遠端守護程序上呼叫命令時,請求會被轉發到 SSH 主機上的 /var/run/docker.sock
Unix 套接字。
$ docker -H ssh://user@192.168.64.5 ps
您可以選擇透過在 SSH 地址末尾附加路徑元件來指定套接字的位置。
$ docker -H ssh://user@192.168.64.5/var/run/docker.sock ps
子命令
命令 | 描述 |
---|---|
docker build (舊版構建器) | 從 Dockerfile 構建映象 |
docker builder | 管理構建 |
docker buildx | Docker Buildx |
docker checkpoint | 管理檢查點 |
docker compose | Docker Compose |
docker config | 管理 Swarm 配置 |
docker container | 管理容器 |
docker context | 管理上下文 |
docker debug | 進入任何容器或映象的 shell。`docker exec` 除錯的替代方案。 |
docker desktop (Beta) | Docker Desktop |
docker image | 管理映象 |
docker init | 為您的專案建立 Docker 相關的啟動檔案 |
docker inspect | 返回 Docker 物件的低階資訊 |
docker login | 向登錄檔進行身份驗證 |
docker logout | 從登錄檔登出 |
docker manifest | 管理 Docker 映象清單和清單列表 |
docker mcp | |
docker model | Docker 模型執行器 |
docker network | 管理網路 |
docker node | 管理 Swarm 節點 |
docker offload | 從 CLI 控制 Docker 解除安裝 |
docker plugin | 管理外掛 |
docker scout | Docker Scout 的命令列工具 |
docker search | 在 Docker Hub 上搜索映象 |
docker secret | 管理 Swarm 密文 |
docker service | 管理 Swarm 服務 |
docker stack | 管理 Swarm 堆疊 |
docker swarm | 管理 Swarm |
docker system | 管理 Docker |
docker trust | 管理 Docker 映象上的信任 |
docker version | 顯示 Docker 版本資訊 |
docker volume | 管理卷 |