在线文档教程
Docker 17
引擎: CLI | Engine: CLI

使用Docker命令行 | Use the Docker command line (Engine)

使用Docker命令行

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") -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。为了避免必须使用sudodocker命令,系统管理员可以创建一个名为的Unix组docker并向其添加用户。

有关安装Docker或sudo配置的更多信息,请参阅适用于您的操作系统的安装说明。

环境变量

为了便于参考,docker命令行支持以下环境变量列表:

  • DOCKER_API_VERSION要使用的API版本 (例如 1.19)。

  • DOCKER_CONFIG客户端配置文件的位置。

  • DOCKER_CERT_PATH身份验证密钥的位置。

  • DOCKER_DRIVER要使用的图形驱动程序。

  • DOCKER_HOST要连接到的守护进程套接字。

  • DOCKER_NOWARN_KERNEL_VERSION防止您的Linux内核不适合Docker的警告。

  • DOCKER_RAMDISK 如果设置这将禁用'pivot_root'。

  • DOCKER_TLS_VERIFY 当设置Docker使用TLS并验证远程。

  • DOCKER_CONTENT_TRUST设置Docker时使用公证人签名和验证图像。等于--disable-content-trust=false构建,创建,拉,推,run。

  • DOCKER_CONTENT_TRUST_SERVER要使用的公证服务器的URL。这默认为与注册表相同的URL。

  • DOCKER_HIDE_LEGACY_COMMANDS设置后,Docker会在输出中隐藏“legacy”顶级命令(如docker rm,和docker pulldocker help,并且仅打印Management commands每个对象类型(例如,docker container)。这可能会成为未来版本中的默认值,此时会删除此环境变量。

  • DOCKER_TMPDIR临时码头文件的位置。

因为Docker是使用GO开发的,所以您也可以使用GO运行时使用的任何环境变量。特别是,你可能会发现这些有用的:

  • HTTP_PROXY

  • HTTPS_PROXY

  • NO_PROXY

这些Go环境变量不区分大小写。见GO规格有关这些变量的详细信息。

配置文件

默认情况下,Docker命令行将其配置文件存储在目录中调用.docker$HOME目录中。但是,您可以通过DOCKER_CONFIG环境变量或--config命令行选项指定不同的位置。如果两者都指定,则该--config选项将覆盖DOCKER_CONFIG环境变量。例如:

docker --config ~/testconfigs/ ps

指示Docker ~/testconfigs/在运行该ps命令时使用目录中的配置文件。

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

当前,您可以修改docker使用环境变量或命令行选项的命令行为。您还可以在config.json来修改一些相同的行为。在使用这些机制时,您必须记住它们之间的优先级顺序。命令行选项覆盖环境变量和环境变量,覆盖您在config.json档案。

config.json文件存储了几个属性的JSON编码:

HttpHeaders属性指定一组标题,以包含从Docker客户端发送到守护程序的所有消息。Docker不会试图解释或理解这些头文件; 它只是将它们放入消息中。Docker不允许这些头文件改变它自己设置的头文件。

该属性psFormat指定docker ps输出的默认格式。当这个--format标志没有被提供时docker ps,Docker的客户端使用这个属性。如果未设置此属性,则客户端将回到默认表格格式。有关支持的格式化指令的列表,请参阅文档中的格式部分docker ps

imagesFormat的特性是默认格式。docker images输出。当--format标志没有提供docker images命令,Docker的客户端使用此属性。如果未设置此属性,则客户端将返回到默认表格式。有关受支持的格式化指令的列表,请参见格式化部分docker images文献资料

pluginsFormat的特性是指定默认格式。docker plugin ls输出。当--format标志没有提供docker plugin ls命令,Docker的客户端使用此属性。如果未设置此属性,则客户端将返回到默认表格式。有关受支持的格式化指令的列表,请参见格式化部分docker plugin ls文献资料

servicesFormat的特性是指定默认格式。docker service ls输出。当--format标志没有提供docker service ls命令,Docker的客户端使用此属性。如果未设置此属性,则客户端将返回到默认的json格式。有关受支持的格式化指令的列表,请参见格式化部分docker service ls文献资料

serviceInspectFormat的特性是指定默认格式。docker service inspect输出。当--format标志没有提供docker service inspect命令,Docker的客户端使用此属性。如果未设置此属性,则客户端将返回到默认的json格式。有关受支持的格式化指令的列表,请参见格式化部分docker service inspect文献资料

statsFormat的特性是指定默认格式。docker stats输出。当--format标志没有提供docker stats命令,Docker的客户端使用此属性。如果未设置此属性,则客户端将返回到默认表格式。有关支持的格式指令列表,请参见格式化部分docker stats文献资料

secretFormat的特性是指定默认格式。docker secret ls输出。当--format标志没有提供docker secret ls命令,Docker的客户端使用此属性。如果未设置此属性,则客户端将返回到默认表格式。有关支持的格式指令列表,请参见格式化部分docker secret ls文献资料

nodesFormat的特性是指定默认格式。docker node ls输出。当--format标志没有提供docker node ls命令,Docker的客户端使用nodesFormat.如果nodesFormat未设置时,客户端将使用默认表格式。有关受支持的格式化指令的列表,请参见格式化部分docker node ls文献资料

configFormat的特性是指定默认格式。docker config ls输出。当--format标志没有提供docker config ls命令,Docker的客户端使用此属性。如果未设置此属性,则客户端将返回到默认表格式。有关支持的格式指令列表,请参见格式化部分docker config ls文献资料

credsStore的特性是指定外部二进制文件作为默认凭据存储。设置此属性时,docker login指定的二进制文件中存储凭据。docker-credential-<value>在$PATH如果未设置此属性,则凭据将存储在auths属性的配置。有关更多信息,请参见凭证存储部分docker login文献资料

credHelpers的特性是指定一组要优先使用的凭据助手。credsStore或auths存储和检索特定注册表的凭据时。如果设置了此属性,则二进制docker-credential-<value>将用于存储或检索特定注册表的凭据。有关更多信息,请参见资信助理员部分docker login文献资料

一旦连接到容器上,用户就会从容器中分离出来,并使用CTRL-p CTRL-q键序列。此分离键序列可使用detachKeys特性。指定<sequence>属性的值。的格式<sequence>是以逗号分隔的字母列表。-Z,或ctrl-与下列任何一项相结合:

  • a-z(单个小写字母字母)

  • @(at标志)

  • [(左括号)

  • \\(2个反斜杠)

  • _(下划线)

  • ^(插入符号)

您的自定义适用于与您的Docker客户端一起启动的所有容器。用户可以根据每个容器覆盖您的自定义或默认密钥序列。为此,用户指定--detach-keysdocker attach,,,docker exec,,,docker rundocker start命令。

以下是一个示例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" } }

公证

如果使用自己的公证服务器和自签名证书或内部证书颁发机构,则需要将证书放在tls/<registry_url>/ca.crtdocker 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,而不考虑默认值。

例如,运行docker 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。所有stderrpty模式都是简单的stdout

字符串和整数

--name=""期望一个字符串等选项,并且它们只能被指定一次。-c=0期望一个整数等选项,并且它们只能被指定一次。

DockerDocker文件CIL命令行