Docker

描述Docker CLI 的基本命令。

描述

根据您的 Docker 系统配置,您可能需要在前 每dockercommand 替换为sudo.为避免使用sudo使用docker命令,您的系统管理员可以创建一个名为docker并向其添加用户。

有关安装 Docker 或sudoconfiguration,请参阅 作系统的安装说明。

显示帮助文本

要列出任何命令的帮助,只需执行该命令,然后执行--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身份验证密钥的位置。此变量由dockerCLI 和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_HOSTenv var 和 default 上下文设置为docker context use)
DOCKER_CUSTOM_HEADERS(实验性)配置客户端发送的自定义 HTTP 标头。标头必须以逗号分隔的name=value对。这相当于HttpHeaders字段中。
DOCKER_DEFAULT_PLATFORM采用--platform旗。
DOCKER_HIDE_LEGACY_COMMANDS设置后,Docker 会隐藏 “legacy” 顶级命令(例如docker rmdocker pull) 在docker helpoutput,并且只有Management commands每个对象类型(例如docker container) 进行打印。这可能会成为未来发行版中的默认值。
DOCKER_HOST要连接的守护程序套接字。
DOCKER_TLSdockerCLI(相当于--tlscommand-line 选项)。设置为非空值以启用 TLS。请注意,如果设置了任何其他 TLS 选项,则会自动启用 TLS。
DOCKER_TLS_VERIFY设置后,Docker 使用 TLS 并验证远程。此变量由dockerCLI 和dockerd守护 进程
BUILDKIT_PROGRESS设置进度输出的类型 (auto,plain,tty,rawjson) 进行构建使用 plain 显示容器输出(默认auto).

由于 Docker 是使用 Go 开发的,因此您也可以使用任何环境 Go 运行时使用的变量。特别是,您可能会发现这些很有用:

变量描述
HTTP_PROXYHTTP 请求的代理 URL,除非被 NoProxy 覆盖。
HTTPS_PROXYHTTPS 请求的代理 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 stderroptions 一起由于 的pty实现。都stderrpty模式 只需转到stdout.

字符串和整数

诸如--name=""expect 一个字符串,而它们 只能指定一次。诸如-c=0期望一个整数,并且它们只能指定一次。

配置文件

默认情况下,Docker 命令行将其配置文件存储在 名为.docker在您的$HOME目录。

Docker 管理配置目录中的大部分文件 你不应该修改它们。但是,您可以修改config.json文件来控制docker命令的行为。

您可以修改docker使用环境的命令行为 变量或命令行选项。您还可以使用config.json来修改某些相同的行为。如果环境变量 和--configflag 时,该标志优先于环境 变量。命令行选项覆盖环境变量和环境 变量会覆盖您在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 配置自定义dockerCLI 的 配置文件使用 JSON 格式和属性:

默认情况下,配置文件存储在~/.docker/config.json.请参阅更改.docker目录部分以使用 不同的位置。

警告

配置文件和~/.docker配置 directory 可能包含敏感信息,例如身份验证信息 用于代理,或者根据您的凭据存储,镜像的凭据 登记处。在与他人共享之前查看配置文件的内容, 并防止将文件提交到版本控制。

自定义命令的默认输出格式

这些字段允许您自定义某些命令的默认输出格式 如果没有--formatflag 的 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.如果未设置此属性,则会存储凭据 在authsCLI 配置文件的属性。有关更多信息, 请参阅Credential stores 部分docker login文档

物业credHelpers指定要使用的一组凭证帮助程序 优先于credsStoreauths存储和检索时 特定注册表的凭据。如果设置了此属性,则Binariesdocker-credential-<value>将在存储或检索凭据时使用 对于特定注册表。有关更多信息,请参阅Credential helpers 部分中的docker login文档

容器的自动代理配置

物业proxies指定要自动的代理环境变量 set 添加到容器上,并设置为--build-arg在容器上使用docker build. 一个"default"代理集,并将用于任何 Docker 客户端连接到的守护进程,或者每个主机的配置(Docker 守护进程), 例如https://docker-daemon1.example.com.以下属性可以 为每个环境设置:

财产描述
httpProxy默认值HTTP_PROXYhttp_proxy对于容器,以及 AS--build-argupperdocker build
httpsProxy默认值HTTPS_PROXYhttps_proxy对于容器,以及 AS--build-argupperdocker build
ftpProxy默认值FTP_PROXYftp_proxy对于容器,以及 AS--build-argupperdocker build
noProxy默认值NO_PROXYno_proxy对于容器,以及 AS--build-argupperdocker build
allProxy默认值ALL_PROXYall_proxy对于容器,以及 AS--build-argupperdocker build

这些设置仅用于配置容器的代理设置,而不用于配置 用作dockerCLI 或dockerd守护 进程。请参阅环境变量HTTP/HTTPS 代理部分,为 CLI 和守护程序配置代理设置。

警告

代理服务器设置可能包含敏感信息(例如,如果代理服务器 需要身份验证)。环境变量以纯文本形式存储在 容器的配置,因此可以通过远程 API 或提交到镜像docker commit.

要从容器中分离的默认键序列

附加到容器后,用户从容器中分离并使用 使用CTRL-p CTRL-q键序列。此 detach 键序列是可自定义的 使用detachKeys财产。指定<sequence>值 财产。的<sequence>是逗号分隔的任一 字母 [a-Z] 或ctrl-与以下任一内容结合使用:

  • a-z(单个小写字母字符)
  • @(签到)
  • [(左括号)
  • \\(两个反斜杠)
  • _(下划线)
  • ^(插入符号)

您的自定义适用于使用 Docker 客户端启动的所有容器。 用户可以覆盖每个容器上的自定义键序列或默认键序列 基础。为此,用户指定--detach-keysflag 替换为docker attach,docker exec,docker rundocker 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-levelinfo将日志记录级别 (debug,info,warn,error,fatal)
--tls使用 TLS;由 --tlsverify 隐含
--tlscacert/root/.docker/ca.pem信任仅由此 CA 签名的证书
--tlscert/root/.docker/cert.pemTLS 证书文件的路径
--tlskey/root/.docker/key.pemTLS 密钥文件的路径
--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 上

要实现类似的效果,而不必指定-Hflag 命令,您还可以创建一个上下文 或者,使用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.sockSSH 主机上的 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 buildxDocker 构建
docker checkpoint管理检查点
docker composeDocker 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 scoutDocker 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管理卷