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 rmdocker 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 后端构建时设置进度输出类型( autoplaintty ). 使用 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指定一组凭据帮助程序,在存储和检索特定注册表的凭据时优先使用credsStoreauths . 如果设置了此属性,则在存储或检索特定注册表的凭据时将使用二进制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_PROXYhttp_proxy的默认值,以及docker build上的--build-arg
httpsProxy 容器的HTTPS_PROXYhttps_proxy的默认值,以及 docker docker build上的--build-arg
ftpProxy 容器的FTP_PROXYftp_proxy的默认值,以及 docker docker build上的--build-arg
noProxy 容器的NO_PROXYno_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 attachdocker execdocker rundocker 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这样的选项需要一个整数,并且它们只能指定一次.

Docker, Docker 文档, CLI, 命令行, config.json, 命令行配置文件

by  icopy.site