docker run
要列出可用命令,请不带参数运行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
# […]
说明
根据您的 Docker 系统配置,您可能需要在每个docker
命令前加上sudo
. 为避免使用sudo
该 docker
命令,您的系统管理员可以创建一个名为的 Unix 组 docker
并向其中添加用户。
有关安装 Docker 或sudo
配置的更多信息,请参阅您的操作系统的安装说明。
环境变量
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 使用 notary 来签署和验证图像。等同--disable-content-trust=false 于构建、创建、拉取、推送、运行。 |
DOCKER_CONTEXT | docker context 要使用的名称(覆盖DOCKER_HOST env var 和使用 设置的默认上下文docker context use ) |
DOCKER_DEFAULT_PLATFORM | 带--platform 标志的命令的默认平台。 |
DOCKER_HIDE_LEGACY_COMMANDS | 设置后,Docker 会在输出中隐藏“传统”顶级命令(例如docker rm , 和docker pull )docker help ,并且仅打印Management commands 每个对象类型(例如docker container )。这可能会成为未来版本中的默认设置,届时该环境变量将被删除。 |
DOCKER_HOST | 要连接的守护进程套接字。 |
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 规范。
配置文件
默认情况下,Docker 命令行将其配置文件存储.docker
在您的目录中调用的$HOME
目录中。
Docker 管理配置目录中的大部分文件,您不应修改它们。但是,您可以修改 config.json
文件以控制docker
命令行为的某些方面。
您可以docker
使用环境变量或命令行选项修改命令行为。您还可以使用其中的选项 config.json
来修改某些相同的行为。如果设置了环境变量和--config
标志,则标志优先于环境变量。命令行选项会覆盖环境变量,而环境变量会覆盖您在config.json
文件中指定的属性。
换.docker
目录
要指定不同的目录,请使用DOCKER_CONFIG
环境变量或--config
命令行选项。如果两者都指定,则该--config
选项会覆盖DOCKER_CONFIG
环境变量。下面的示例docker ps
使用config.json
位于~/testconfigs/
目录中的文件覆盖命令 。
$ docker --config ~/testconfigs/ ps
此标志仅适用于正在运行的任何命令。对于持久配置,您可以DOCKER_CONFIG
在 shell 中设置环境变量(例如~/.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 。 |
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 。 |
自定义 HTTP 标头
该属性HttpHeaders
指定要包含在从 Docker 客户端发送到守护程序的所有消息中的一组标头。Docker 不会尝试解释或理解这些标头;它只是将它们放入消息中。Docker 不允许这些标头更改它为自己设置的任何标头。
凭证商店选项
该属性credsStore
指定一个外部二进制文件作为默认凭据存储。设置此属性后,docker login
将尝试将凭据存储在由docker-credential-<value>
which is visible on指定的二进制文件中$PATH
。如果未设置此属性,凭据将存储在auths
配置的属性中。有关更多信息,请参阅文档中的 凭据存储部分docker login
该属性credHelpers
指定了一组凭证助手,用于优先使用credsStore
或auths
在存储和检索特定注册表的凭证时使用。如果设置了此属性,则docker-credential-<value>
在存储或检索特定注册表的凭据时将使用二进制文件 。有关更多信息,请参阅文档中的 凭据帮助程序部分docker login
堆栈的 Orchestrator 选项
该属性stackOrchestrator
指定在运行docker stack
管理命令时要使用的默认协调器。有效值是"swarm"
, "kubernetes"
和"all"
。该属性可以被DOCKER_STACK_ORCHESTRATOR
环境变量或--orchestrator
标志覆盖 。
容器的自动代理配置
该属性proxies
指定要在容器上自动设置的代理环境变量,并--build-arg
在docker build
. "default"
可以配置一组代理,并将用于客户端连接到的任何 docker 守护程序,或每个主机的配置(docker 守护程序),例如,“https://docker-daemon1.example.com”。可以为每个环境设置以下属性:
财产 | 描述 |
---|---|
httpProxy | 默认值HTTP_PROXY 和http_proxy 集装箱,并为--build-arg 上docker build |
httpsProxy | 默认值HTTPS_PROXY 和https_proxy 集装箱,并为--build-arg 上docker build |
ftpProxy | 默认值FTP_PROXY 和ftp_proxy 集装箱,并为--build-arg 上docker build |
noProxy | 默认值NO_PROXY 和no_proxy 集装箱,并为--build-arg 上docker build |
这些设置仅用于为容器配置代理设置,而不用作docker
CLI 或dockerd
守护程序的代理设置。请参阅 环境变量和HTTP/HTTPS 代理 部分以配置 cli 和守护程序的代理设置。
警告
代理设置可能包含敏感信息(例如,如果代理需要身份验证)。环境变量以纯文本形式存储在容器的配置中,因此可以通过远程 API 检查或在使用
docker commit
.
从容器中分离的默认键序列
一旦附加到一个容器,用户就可以从它分离并使用 usingCTRL-p CTRL-q
键序列让它继续运行。此分离键序列可使用该detachKeys
属性进行自定义。指定<sequence>
属性的值。的格式<sequence>
是一个以逗号分隔的列表,由字母 [aZ] 或ctrl-
与以下任意项组合而成:
a-z
(单个小写字母字符)@
(在标志处)[
(左括号)\\
(两个反斜杠)_
(下划线)^
(插入符号)
您的自定义适用于从您的 Docker 客户端启动的所有容器。用户可以在每个容器的基础上覆盖您的自定义或默认键序列。要做到这一点,用户指定--detach-keys
旗docker attach
,docker exec
,docker run
或docker start
命令。
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"
},
"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"
}
}
}
实验功能
实验性功能提供了对未来产品功能的早期访问。这些功能用于测试和反馈,它们可能会在没有警告的情况下在不同版本之间更改,或者可以从未来版本中删除。
从 Docker 20.10 开始,实验性 CLI 功能默认启用,无需配置即可启用它们。
公证人
如果使用自己的公证服务器和自签名证书或内部证书颁发机构,则需要将证书放在 tls/<registry_url>/ca.crt
docker config 目录中。
或者,您可以通过将证书添加到系统的根证书颁发机构列表来全局信任证书。
例子
显示帮助文本
要列出任何命令的帮助,只需执行命令,然后是 --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 [])
<...>
选项类型
可以组合单个字符命令行选项,因此docker run -i -t --name test busybox sh
您可以编写docker run -it --name test busybox sh
.
布尔值
布尔选项采用-d=false
. 您在帮助文本中看到的值是默认值,如果您未指定该标志,则会设置该值。如果您指定一个没有值的布尔标志true
,则无论默认值如何,这都会将该标志设置为。
例如, runningdocker 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
笔记
由于实现上的限制,不要将-t
和-a stderr
选项一起使用pty
。All stderr
inpty
模式只是转到stdout
。
字符串和整数
像--name=""
期望一个字符串这样的选项,它们只能被指定一次。像-c=0
期望一个整数这样的选项,它们只能被指定一次。
Docker、[Docker 文档](https://docs.docker.com/search/?q=Docker documentation)、CLI、[命令行](https://docs.docker.com/search/?q=command line)、config.json、[CLI 配置文件](https://docs.docker.com/search/?q=CLI configuration file)