【从头开始学docker系列之八,使用 docker run命令】

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

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

环境变量

docker命令行支持以下环境变量列表:

变量描述
DOCKER_API_VERSION覆盖协商的 API 版本以用于调试(例如1.19
DOCKER_CERT_PATH身份验证密钥的位置。dockerCLI 和守护程序都使用此变量dockerd
DOCKER_CONFIG客户端配置文件的位置。
DOCKER_CONTENT_TRUST_SERVER要使用的公证服务器的 URL。默认为与注册表相同的 URL。
DOCKER_CONTENT_TRUST当设置 Docker 使用 notary 来签署和验证图像。等同--disable-content-trust=false于构建、创建、拉取、推送、运行。
DOCKER_CONTEXTdocker context要使用的名称(覆盖DOCKER_HOSTenv var 和使用 设置的默认上下文docker context use
DOCKER_DEFAULT_PLATFORM--platform标志的命令的默认平台。
DOCKER_HIDE_LEGACY_COMMANDS设置后,Docker 会在输出中隐藏“传统”顶级命令(例如docker rm, 和docker pulldocker help,并且仅打印Management commands每个对象类型(例如docker container)。这可能会成为未来版本中的默认设置,届时该环境变量将被删除。
DOCKER_HOST要连接的守护进程套接字。
DOCKER_STACK_ORCHESTRATOR配置使用docker stack管理命令时要使用的默认协调器。
DOCKER_TLS_VERIFY设置后 Docker 使用 TLS 并验证远程。dockerCLI 和守护程序都使用此变量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 配置自定义dockerCLI 的设置。配置文件使用 JSON 格式和属性:

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

警告

~/.docker配置目录中的配置文件和其他文件可能包含敏感信息,例如代理的身份验证信息,或者根据您的凭据存储,映像注册表的凭据。在与他人共享之前检查您的配置文件的内容,并防止将文件提交给版本控制。

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

如果未--format提供标志,这些字段允许您自定义某些命令的默认输出格式。

财产描述
configFormatdocker config ls输出的自定义默认格式。有关支持的格式化指令列表,请参阅文档中的输出格式部分docker config ls
imagesFormatdocker images/docker image ls输出的自定义默认格式。有关支持的格式化指令列表,请参阅文档中的输出格式部分docker images
nodesFormatdocker node ls输出的自定义默认格式。有关支持的格式指令列表,请参阅文档中格式部分docker node ls
pluginsFormatdocker plugin ls输出的自定义默认格式。有关支持的格式指令列表,请参阅文档中格式部分docker plugin ls
psFormatdocker ps/docker container ps输出的自定义默认格式。有关支持的格式指令列表,请参阅文档中格式部分docker ps
secretFormatdocker secret ls输出的自定义默认格式。有关支持的格式化指令列表,请参阅文档中的输出格式部分docker secret ls
serviceInspectFormatdocker service inspect输出的自定义默认格式。有关支持的格式指令列表,请参阅文档中格式部分docker service inspect
servicesFormatdocker service ls输出的自定义默认格式。有关支持的格式指令列表,请参阅文档中格式部分docker service ls
statsFormatdocker stats输出的自定义默认格式。有关支持的格式指令列表,请参阅文档中格式部分docker stats

自定义 HTTP 标头

该属性HttpHeaders指定要包含在从 Docker 客户端发送到守护程序的所有消息中的一组标头。Docker 不会尝试解释或理解这些标头;它只是将它们放入消息中。Docker 不允许这些标头更改它为自己设置的任何标头。

凭证商店选项

该属性credsStore指定一个外部二进制文件作为默认凭据存储。设置此属性后,docker login将尝试将凭据存储在由docker-credential-<value>which is visible on指定的二进制文件中$PATH。如果未设置此属性,凭据将存储在auths配置的属性中。有关更多信息,请参阅文档中凭据存储部分docker login

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

堆栈的 Orchestrator 选项

该属性stackOrchestrator指定在运行docker stack管理命令时要使用的默认协调器。有效值是"swarm""kubernetes""all"。该属性可以被DOCKER_STACK_ORCHESTRATOR环境变量或--orchestrator标志覆盖 。

容器的自动代理配置

该属性proxies指定要在容器上自动设置的代理环境变量,并--build-argdocker build. "default"可以配置一组代理,并将用于客户端连接到的任何 docker 守护程序,或每个主机的配置(docker 守护程序),例如,“https://docker-daemon1.example.com”。可以为每个环境设置以下属性:

财产描述
httpProxy默认值HTTP_PROXYhttp_proxy集装箱,并为--build-argdocker build
httpsProxy默认值HTTPS_PROXYhttps_proxy集装箱,并为--build-argdocker build
ftpProxy默认值FTP_PROXYftp_proxy集装箱,并为--build-argdocker build
noProxy默认值NO_PROXYno_proxy集装箱,并为--build-argdocker build

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

警告

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

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

一旦附加到一个容器,用户就可以从它分离并使用 usingCTRL-p CTRL-q键序列让它继续运行。此分离键序列可使用该detachKeys属性进行自定义。指定<sequence>属性的值。的格式<sequence>是一个以逗号分隔的列表,由字母 [aZ] 或ctrl-与以下任意项组合而成:

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

您的自定义适用于从您的 Docker 客户端启动的所有容器。用户可以在每个容器的基础上覆盖您的自定义或默认键序列。要做到这一点,用户指定--detach-keysdocker attachdocker execdocker rundocker 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.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,则无论默认值如何,这都会将该标志设置为。

例如, 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 stderrinpty模式只是转到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)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
docker run是用于创建一个新的容器并运行一个命令的指令。通过docker run指令可以设置许多参数来定制容器的行为。 其中一个常用的参数是-d,它表示以后台模式运行容器,即容器会在后台运行而不会阻塞命令行终端。可以使用--name参数为容器指定一个名称,并使用--restart参数设置容器Docker重启后自动启动。例如,可以使用以下命令创建一个名为jenkins2的容器,并在Docker重启后自动启动: docker run -d --name jenkins2 --restart always jenkins/jenkins 另一个常用的参数是-p,它用于将容器的端口映射到主机的端口。可以使用三种不同的写法来设置端口映射。一种写法是指定主机的IP地址、主机的端口和容器的端口;另一种写法是只指定主机的端口和容器的端口;第三种写法是只指定容器的端口。例如,以下是三种写法的实际例子: docker run -p ip:主机端口:容器端口 docker run -p 主机端口:容器端口(常用) docker run -p 容器端口 这些是docker run指令的一些常用参数和用法。你可以根据需要选择适合的参数来创建和定制容器。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Docker命令总结:run](https://blog.csdn.net/qq_47346664/article/details/119887657)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [【Docker系列】从头Docker——docker run 命令详解](https://blog.csdn.net/qq_45547688/article/details/125785419)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dangkei

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值