Use the Docker command line
docker
要列出可用命令,请不带参数运行docker
或执行docker help
:
$ docker
Usage: docker [OPTIONS] COMMAND [ARG...]
docker [ --help | -v | --version ]
A self-sufficient runtime for containers.
Options:
--config string Location of client config files (default "/root/.docker")
-c, --context string Name of the context to use to connect to the daemon (overrides DOCKER_HOST env var and default context set with "docker context use")
-D, --debug Enable debug mode
--help Print usage
-H, --host value Daemon socket(s) to connect to (default [])
-l, --log-level string Set the logging level ("debug"|"info"|"warn"|"error"|"fatal") (default "info")
--tls Use TLS; implied by --tlsverify
--tlscacert string Trust certs signed only by this CA (default "/root/.docker/ca.pem")
--tlscert string Path to TLS certificate file (default "/root/.docker/cert.pem")
--tlskey string Path to TLS key file (default "/root/.docker/key.pem")
--tlsverify Use TLS and verify the remote
-v, --version Print version information and quit
Commands:
attach Attach to a running container
# […]
Description
根据您的 Docker 系统配置,您可能需要在每个docker
命令前加上sudo
. 为避免在docker
命令中使用sudo
,您的系统管理员可以创建一个名为docker
的 Unix 组并向其添加用户.
有关安装 Docker 或sudo
配置的更多信息,请参阅您的操作系统的安装说明.
Environment variables
docker
命令行支持以下环境变量列表:
Variable | Description |
---|---|
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 docker context 的名称(覆盖DOCKER_HOST env var 和使用 docker docker context use 设置的默认上下文) |
DOCKER_DEFAULT_PLATFORM |
采用--platform 标志的命令的默认平台. |
DOCKER_HIDE_LEGACY_COMMANDS |
设置后,Docker 会在docker help 输出中隐藏"旧版"顶级命令(例如docker rm 和docker pull ),并且仅打印每种对象类型(例如docker container )的Management commands . 这可能会成为未来版本中的默认值,此时此环境变量将被删除. |
DOCKER_HOST |
Daemon socket to connect to. |
DOCKER_STACK_ORCHESTRATOR |
配置使用docker stack 管理命令时要使用的默认编排器. |
DOCKER_TLS_VERIFY |
当设置 Docker 使用 TLS 并验证远程. docker CLI 和dockerd 守护进程都使用此变量 |
BUILDKIT_PROGRESS |
使用BuildKit 后端构建时设置进度输出类型( auto 、 plain 、 tty ). 使用 plain 显示容器输出(默认auto ). |
由于 Docker 是使用 Go 开发的,因此您还可以使用 Go 运行时使用的任何环境变量. 特别是,您可能会发现这些很有用:
HTTP_PROXY
HTTPS_PROXY
NO_PROXY
这些 Go 环境变量不区分大小写. 有关这些变量的详细信息,请参阅Go 规范.
Configuration files
默认情况下,Docker 命令行将其配置文件存储在$HOME
目录中名为.docker
的目录中.
Docker 管理配置目录中的大部分文件,您不应修改它们. 但是,您可以修改config.json
文件来控制docker
命令行为方式的某些方面.
您可以使用环境变量或命令行选项修改docker
命令行为. 您还可以使用config.json
中的选项来修改一些相同的行为. 如果设置了环境变量和--config
标志,则该标志优先于环境变量. 命令行选项会覆盖环境变量,而环境变量会覆盖您在config.json
文件中指定的属性.
Change the .docker
directory
要指定不同的目录,请使用DOCKER_CONFIG
环境变量或--config
命令行选项. 如果两者都指定,则--config
选项将覆盖DOCKER_CONFIG
环境变量. 下面的示例使用位于~/testconfigs/
目录中的config.json
文件覆盖 docker docker ps
命令.
$ docker --config ~/testconfigs/ ps
此标志仅适用于正在运行的任何命令. 对于持久配置,您可以在 shell 中设置DOCKER_CONFIG
环境变量(例如~/.profile
或~/.bashrc
). 下面的示例将新目录设置为HOME/newdir/.docker
.
$ echo export DOCKER_CONFIG=$HOME/newdir/.docker > ~/.profile
Docker CLI configuration file (config.json
) properties
使用 Docker CLI 配置自定义docker
CLI 的设置. 配置文件使用 JSON 格式和属性:
默认情况下,配置文件存储在~/.docker/config.json
中. 请参阅更改.docker
目录部分以使用不同的位置.
Warning
~/.docker
配置目录中的配置文件和其他文件可能包含敏感信息,例如代理的身份验证信息,或者取决于您的凭据存储,图像注册表的凭据. 在与他人共享之前检查您的配置文件的内容,并防止将文件提交给版本控制.
Customize the default output format for commands
如果未提供--format
标志,这些字段允许您自定义某些命令的默认输出格式.
Property | Description |
---|---|
configFormat |
docker config ls 输出的自定义默认格式. 有关支持的格式化指令列表,请参阅docker config ls 文档中的格式输出部分. |
imagesFormat |
docker images / docker image ls 输出的自定义默认格式. 有关支持的格式指令列表,请参阅docker images 文档中的格式输出部分. |
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 文档中的格式化部分. |
Custom HTTP headers
属性HttpHeaders
指定一组标头,以包含在从 Docker 客户端发送到守护程序的所有消息中. Docker 不会尝试解释或理解这些标头; 它只是将它们放入消息中. Docker 不允许这些标头更改它为自己设置的任何标头.
Credential store options
属性credsStore
指定一个外部二进制文件作为默认凭证存储. 设置此属性后, docker login
将尝试将凭据存储在docker-credential-<value>
指定的二进制文件中,该二进制文件在$PATH
上可见. 如果未设置此属性,则凭据将存储在配置的auths
属性中. 有关更多信息,请参阅docker login
文档中的凭据存储部分
属性credHelpers
指定一组凭据帮助程序,在存储和检索特定注册表的凭据时优先使用credsStore
或auths
. 如果设置了此属性,则在存储或检索特定注册表的凭据时将使用二进制docker-credential-<value>
. 有关更多信息,请参阅docker login
文档中的凭据帮助程序部分
Orchestrator options for docker stacks
属性stackOrchestrator
指定运行 docker docker stack
管理命令时要使用的默认编排器. 有效值为"swarm"
、 "kubernetes"
和"all"
. 可以使用DOCKER_STACK_ORCHESTRATOR
环境变量或--orchestrator
标志覆盖此属性.
Automatic proxy configuration for containers
属性proxies
指定要在容器上自动设置的代理环境变量,并在docker build
期间使用的容器上设置为--build-arg
. 可以配置一组"default"
代理,并将用于客户端连接到的任何 docker 守护程序,或每个主机的配置(docker 守护程序),例如,"https://docker-daemon1.example.com ". 可以为每个环境设置以下属性:
Property | Description |
---|---|
httpProxy |
容器的HTTP_PROXY 和http_proxy 的默认值,以及docker build 上的--build-arg |
httpsProxy |
容器的HTTPS_PROXY 和https_proxy 的默认值,以及 docker docker build 上的--build-arg |
ftpProxy |
容器的FTP_PROXY 和ftp_proxy 的默认值,以及 docker docker build 上的--build-arg |
noProxy |
容器的NO_PROXY 和no_proxy 的默认值,以及 docker docker build 上的--build-arg |
这些设置仅用于为容器配置代理设置,而不用作docker
CLI 或dockerd
守护程序的代理设置. 请参阅环境变量和HTTP/HTTPS 代理部分以配置 cli 和守护程序的代理设置.
Warning
代理设置可能包含敏感信息(例如,如果代理需要身份验证). 环境变量以纯文本形式存储在容器的配置中,因此可以通过远程 API 检查或在使用
docker commit
时提交到图像.
Default key-sequence to detach from containers
连接到容器后,用户会从容器中分离出来并使用CTRL-p CTRL-q
键序列使其运行. 此分离键序列可使用detachKeys
属性进行自定义. 为属性指定<sequence>
值. <sequence>
的格式是逗号分隔的字母 [aZ] 或ctrl-
与以下任意组合的列表:
az
(单个小写字母字符)@
(在符号处)[
(左括号)\\
(两个反斜杠)_
(underscore)^
(caret)
您的自定义适用于使用 Docker 客户端启动的所有容器. 用户可以基于每个容器覆盖您的自定义或默认键序列. 为此,用户使用docker attach
、 docker exec
、 docker run
或docker start
命令指定--detach-keys
标志.
CLI Plugin options
属性plugins
包含特定于 CLI 插件的设置. 键是插件名称,而值是选项的进一步映射,特定于该插件.
Sample configuration file
以下是一个示例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"
},
"stackOrchestrator": "kubernetes",
"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"
},
"https://manager1.mycorp.example.com:2377": {
"httpProxy": "http://user:pass@example.com:3128",
"httpsProxy": "https://my-proxy.example.com:3129"
}
}
}
Experimental features
实验功能提供对未来产品功能的早期访问. 这些功能用于测试和反馈,它们可能会在版本之间更改而不会发出警告,或者可以从未来的版本中删除.
从 Docker 20.10 开始,实验性 CLI 功能默认启用,无需配置即可启用.
Notary
如果使用您自己的公证服务器和自签名证书或内部证书颁发机构,您需要将证书放在 docker config 目录中的tls/<registry_url>/ca.crt
中.
或者,您可以通过将证书添加到系统的根证书颁发机构列表来全局信任证书.
Examples
Display help text
要列出任何命令的帮助,只需执行命令,然后执行--help
选项.
$ docker run --help
Usage: docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
Run a command in a new container
Options:
--add-host value Add a custom host-to-IP mapping (host:ip) (default [])
-a, --attach value Attach to STDIN, STDOUT or STDERR (default [])
<...>
Option types
可以组合单字符命令行选项,因此您可以编写docker run -it --name test busybox sh
,而不是键入docker run -i -t --name test busybox sh
busybox sh .
Boolean
布尔选项采用-d=false
形式. 您在帮助文本中看到的值是您未指定该标志时设置的默认值. 如果您指定一个没有值的布尔标志,这会将标志设置为true
,而不考虑默认值.
例如,运行docker run -d
会将值设置为true
,因此您的容器将在后台以"分离"模式运行.
默认为true
的选项(例如, docker build --rm=true
)只能通过将它们显式设置为false
来设置为非默认值:
$ docker build --rm=false .
Multi
您可以在单个命令行中多次指定-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
Note
由于
pty
实现的限制,请勿同时使用-t
和-a stderr
选项.pty
模式下的所有stderr
都只是转到stdout
.
Strings and Integers
--name=""
类的选项需要一个字符串,并且它们只能指定一次. 像-c=0
这样的选项需要一个整数,并且它们只能指定一次.