Docker
描述 | Docker CLI 的基本命令。 |
---|
描述
根据您的 Docker 系统配置,您可能需要在前
每docker
command 替换为sudo
.为避免使用sudo
使用docker
命令,您的系统管理员可以创建一个名为docker
并向其添加用户。
有关安装 Docker 或sudo
configuration,请参阅
作系统的安装说明。
显示帮助文本
要列出任何命令的帮助,只需执行该命令,然后执行--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 | 要使用的 Notary 服务器的 URL。默认为与注册表相同的 URL。 |
DOCKER_CONTENT_TRUST | 设置后,Docker 使用 notary 对镜像进行签名和验证。等同于--disable-content-trust=false 用于 build、create、pull、push、run。 |
DOCKER_CONTEXT | 名称docker context 以使用 (覆盖DOCKER_HOST env var 和 default 上下文设置为docker context use ) |
DOCKER_CUSTOM_HEADERS | (实验性)配置客户端发送的自定义 HTTP 标头。标头必须以逗号分隔的name=value 对。这相当于HttpHeaders 字段中。 |
DOCKER_DEFAULT_PLATFORM | 采用--platform 旗。 |
DOCKER_HIDE_LEGACY_COMMANDS | 设置后,Docker 会隐藏 “legacy” 顶级命令(例如docker rm 和docker pull ) 在docker help output,并且只有Management commands 每个对象类型(例如docker container ) 进行打印。这可能会成为未来发行版中的默认值。 |
DOCKER_HOST | 要连接的守护程序套接字。 |
DOCKER_TLS | 为docker CLI(相当于--tls command-line 选项)。设置为非空值以启用 TLS。请注意,如果设置了任何其他 TLS 选项,则会自动启用 TLS。 |
DOCKER_TLS_VERIFY | 设置后,Docker 使用 TLS 并验证远程。此变量由docker CLI 和dockerd 守护 进程 |
BUILDKIT_PROGRESS | 设置进度输出的类型 (auto ,plain ,tty ,rawjson ) 进行构建。使用 plain 显示容器输出(默认auto ). |
由于 Docker 是使用 Go 开发的,因此您也可以使用任何环境 Go 运行时使用的变量。特别是,您可能会发现这些很有用:
变量 | 描述 |
---|---|
HTTP_PROXY | HTTP 请求的代理 URL,除非被 NoProxy 覆盖。 |
HTTPS_PROXY | HTTPS 请求的代理 URL,除非被 NoProxy 覆盖。 |
NO_PROXY | 逗号分隔值,指定应从代理中排除的主机。 |
有关这些变量的详细信息,请参阅 Go 规范。
选项类型
单个字符命令行选项可以组合使用,因此而不是
打字docker run -i -t --name test busybox sh
,
您可以编写docker run -it --name test busybox sh
.
布尔
布尔选项采用以下格式-d=false
.您在帮助文本中看到的值是
如果未指定该标志,则设置的默认值。如果你
指定一个不带值的 Boolean 标志,这会将标志设置为true
,
与默认值无关。
例如,运行docker run -d
会将值设置为true
,因此您的
容器将在后台以 “detached” 模式运行。
默认为true
(例如,docker build --rm=true
) 只能是
通过将 API 显式设置为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
options 一起由于 的pty
实现。都stderr
在pty
模式 只需转到stdout
.
字符串和整数
诸如--name=""
expect 一个字符串,而它们
只能指定一次。诸如-c=0
期望一个整数,并且它们只能指定一次。
配置文件
默认情况下,Docker 命令行将其配置文件存储在
名为.docker
在您的$HOME
目录。
Docker 管理配置目录中的大部分文件
你不应该修改它们。但是,您可以修改config.json
文件来控制docker
命令的行为。
您可以修改docker
使用环境的命令行为
变量或命令行选项。您还可以使用config.json
来修改某些相同的行为。如果环境变量
和--config
flag 时,该标志优先于环境
变量。命令行选项覆盖环境变量和环境
变量会覆盖您在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
配置 directory 可能包含敏感信息,例如身份验证信息 用于代理,或者根据您的凭据存储,镜像的凭据 登记处。在与他人共享之前查看配置文件的内容, 并防止将文件提交到版本控制。
自定义命令的默认输出格式
这些字段允许您自定义某些命令的默认输出格式
如果没有--format
flag 的 Flag。
财产 | 描述 |
---|---|
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 可以
不允许这些 Headers 更改它为自己设置的任何 Headers。
或者,使用DOCKER_CUSTOM_HEADERS
环境变量、
在 v27.1 及更高版本中可用。此环境变量是实验性的,
它的确切行为可能会发生变化。
凭据存储选项
物业credsStore
指定要用作默认值的外部Binaries
凭据存储。设置此属性后,docker login
将尝试
将凭证存储在由docker-credential-<value>
哪
在$PATH
.如果未设置此属性,则会存储凭据
在auths
CLI 配置文件的属性。有关更多信息,
请参阅Credential stores 部分docker login
文档
物业credHelpers
指定要使用的一组凭证帮助程序
优先于credsStore
或auths
存储和检索时
特定注册表的凭据。如果设置了此属性,则Binariesdocker-credential-<value>
将在存储或检索凭据时使用
对于特定注册表。有关更多信息,请参阅Credential helpers 部分中的docker login
文档
容器的自动代理配置
物业proxies
指定要自动的代理环境变量
set 添加到容器上,并设置为--build-arg
在容器上使用docker build
.
一个"default"
代理集,并将用于任何 Docker
客户端连接到的守护进程,或者每个主机的配置(Docker 守护进程),
例如https://docker-daemon1.example.com
.以下属性可以
为每个环境设置:
财产 | 描述 |
---|---|
httpProxy | 默认值HTTP_PROXY 和http_proxy 对于容器,以及 AS--build-arg upperdocker build |
httpsProxy | 默认值HTTPS_PROXY 和https_proxy 对于容器,以及 AS--build-arg upperdocker build |
ftpProxy | 默认值FTP_PROXY 和ftp_proxy 对于容器,以及 AS--build-arg upperdocker build |
noProxy | 默认值NO_PROXY 和no_proxy 对于容器,以及 AS--build-arg upperdocker build |
allProxy | 默认值ALL_PROXY 和all_proxy 对于容器,以及 AS--build-arg upperdocker build |
这些设置仅用于配置容器的代理设置,而不用于配置
用作docker
CLI 或dockerd
守护 进程。请参阅环境变量和 HTTP/HTTPS 代理部分,为 CLI 和守护程序配置代理设置。
警告
代理服务器设置可能包含敏感信息(例如,如果代理服务器 需要身份验证)。环境变量以纯文本形式存储在 容器的配置,因此可以通过远程 API 或提交到镜像
docker commit
.
要从容器中分离的默认键序列
附加到容器后,用户从容器中分离并使用
使用CTRL-p CTRL-q
键序列。此 detach 键序列是可自定义的
使用detachKeys
财产。指定<sequence>
值
财产。的<sequence>
是逗号分隔的任一
字母 [a-Z] 或ctrl-
与以下任一内容结合使用:
a-z
(单个小写字母字符)@
(签到)[
(左括号)\\
(两个反斜杠)_
(下划线)^
(插入符号)
您的自定义适用于使用 Docker 客户端启动的所有容器。
用户可以覆盖每个容器上的自定义键序列或默认键序列
基础。为此,用户指定--detach-keys
flag 替换为docker attach
,docker exec
,docker run
或docker start
命令。
CLI 插件选项
物业plugins
包含特定于 CLI 插件的设置。这
key 是插件名称,而 value 是选项的进一步映射,
它们特定于该插件。
示例配置文件
下面是一个示例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 功能默认启用, 并且不需要任何配置即可启用它们。
公证人
如果使用您自己的公证服务器和自签名证书或内部
证书颁发机构,您需要将证书放在tls/<registry_url>/ca.crt
在您的 Docker 配置目录中。
或者,您可以通过将证书添加到系统的 根证书颁发机构列表。
选项
选择 | 违约 | 描述 |
---|---|---|
--config | /root/.docker | 客户端配置文件的位置 |
-c, --context | 用于连接到守护进程的上下文的名称(覆盖 env var 和默认上下文DOCKER_HOSTdocker context use ) | |
-D, --debug | 启用调试模式 | |
-H, --host | 要连接的守护程序套接字 | |
-l, --log-level | info | 将日志记录级别 (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://[<path>] | Unix 套接字(仅限 Linux) | unix:///var/run/docker.sock |
tcp://[<IP or host>[:port]] | TCP 连接 | tcp://174.17.0.1:2376 |
ssh://[username@]<IP or host>[:port] | SSH 连接 | ssh://user@192.168.64.5 |
npipe://[<name>] | 命名管道(仅限 Windows) | npipe:////./pipe/docker_engine |
如果您未指定-H
标志,并且您没有使用自定义上下文,
命令使用以下默认套接字:
unix:///var/run/docker.sock
在 macOS 和 Linux 上npipe:////./pipe/docker_engine
在 Windows 上
要实现类似的效果,而不必指定-H
flag
命令,您还可以创建一个上下文
或者,使用DOCKER_HOST
环境变量.
有关-H
标志,请参阅 Daemon 套接字选项。
使用 TCP 套接字
以下示例显示了如何调用docker ps
通过 TCP 连接到远程
具有 IP 地址的守护程序174.17.0.1
、侦听端口2376
:
$ docker -H tcp://174.17.0.1:2376 ps
注意
按照约定,Docker 守护程序使用端口
2376
对于安全的 TLS 连接, 和端口2375
用于不安全的非 TLS 连接。
使用 SSH 套接字
当您使用 SSH 在远程守护程序上调用命令时,请求将被转发
到/var/run/docker.sock
SSH 主机上的 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 (legacy builder) | 从 Dockerfile 构建镜像 |
docker builder | 管理构建 |
docker buildx | Docker 构建 |
docker checkpoint | 管理检查点 |
docker compose | Docker Compose |
docker config | 管理 Swarm 配置 |
docker container | 管理容器 |
docker context | 管理上下文 |
docker debug | 将 shell 放入任何容器或镜像中。使用 'docker exec' 进行调试的替代方法。 |
docker image | 管理镜像 |
docker init | 为您的项目创建与 Docker 相关的启动文件 |
docker inspect | 返回有关 Docker 对象的低级信息 |
docker login | 对注册表进行身份验证 |
docker logout | 从 registry 注销 |
docker manifest | 管理 Docker 镜像清单和清单列表 |
docker network | 管理网络 |
docker node | 管理 Swarm 节点 |
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 | 管理卷 |