docker run命令参数 | 运行docker命令详解 10

作者 : 慕源网 本文共3020个字,预计阅读时间需要8分钟 发布时间: 2021-12-12 共1.66K人阅读

运行docker命令介绍

“docker run”命令用于在新容器中运行或启动命令,它会在命令中提到的镜像之上创建一个可写层。这就是为什么我们称容器为可写镜像。这是我们开始学习 Docker 时运行的第一个命令。此命令有很多选项可用于根据我们的要求配置容器,例如以分离模式或交互模式运行容器、为容器指定名称、附加网络、卷等,公开端口以访问容器’ 应用程序,以及更多的东西。

语法

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

docker run命令参数 OPTIONS:

-d, –detach:用于在后台运行容器并打印容器ID。

-e、-env:用于设置容器中的环境变量。

-h, –hostname:用于更改容器的主机名。

-i, –interactive:用于与容器交互

–isolation:用于指定容器隔离技术

-l, –lable:用于向容器添加元数据。

–link:它添加到另一个容器的链接

–log-driver:用于指定容器的日志驱动,覆盖默认的日志驱动

–log-opts:用于指定日志驱动程序的选项。

-m, –memory: 用于以字节为单位设置内存限制

–mount:用于将文件系统挂载到容器

–name:用于指定容器的名称

–network:用于将容器连接到与默认网络不同的网络

-p, –publish: 用于将容器的端口发布到主机

–restart:它允许我们为容器指定重启策略

-rm:它在容器退出或停止运行时立即删除容器

-t, –tty: 它分配终端并且主要与’-i’选项一起使用。

-v, –volume:用于将volume绑定到容器上进行持久化存储

-w, –workdir: 允许设置容器的工作目录

上述选项是我们在使用“docker run”命令时最常使用的选项。我们可以使用 ‘-help’ 选项列出该命令的所有可用选项,如下所示:

docker run --help

 

在 Docker 中运行命令是如何工作的?

当我们在终端上运行 ‘docker run’ 命令时,Docker 守护进程在本地搜索提到的 Docker 镜像,如果它在本地找到该镜像,那么它会在指定的 Docker 镜像上创建一个可写层并使用指定的命令启动容器,如果它在本地找不到映像,然后它首先从仓库中提取该映像,默认情况下,如果 daemon.json 文件中没有配置本地仓库,它会转到“hub.docker.com”。

Docker 运行命令示例

以下是下面提到的以下示例

示例#1

让我们运行我们的第一个容器 ‘hello world 而不指定任何选项,如下所示:

docker run hello-world

 

说明:在上面的快照中,我们可以看到“hello-world”镜像在本地不可用,所以守护进程首先在本地拉取该镜像并运行容器,“hello-world”容器在 STDOUT 上显示了一些数据并退出。

示例#2

让我们使用“–name”参数为容器命名,如下所示:

docker run –name nginx-con nginx

 

说明:在上面的例子中,创建了一个名为 ‘nginx-con’ 的 nginx 容器。如果我们不使用“–name”参数,那么守护进程会随机选择任何名称并分配给容器。另外,我们可以看到光标卡住了,我们没有得到终端,因为容器在前台运行。我们使用 ‘ctrl+c’ 退出容器,但是,它也会停止容器。

示例 #3

让我们以分离模式运行容器以使用“-d”参数解决上述问题,如下所示:

docker run -d --name nginx-con2 nginx

说明:在上面的例子中,我们只得到了容器 ID,因为容器现在在后台运行,而且这次 daemon 没有拉取镜像,因为 nginx 镜像已经在本地可用。

示例 #4

现在,使用“-e”参数设置环境变量,如下所示:

docker run -d -e "USER=test1" --name nginx-con nginx

 

说明:在上面的示例中,我们使用了“-e”参数将环境变量 USER 设置为 test1。现在,如果我们想验证是否在容器内创建了 USER 环境变量,我们可以使用带有 ‘-i’ 和 ‘-t’ 选项的 ‘exec’ 命令连接到容器,如下所示:

docker exec -it nginx-con sh
#echo $USER

说明:在上面的快照中,我们已经连接到容器的名称,但是,我们也可以使用容器 ID,并且容器必须处于运行状态才能连接到它。

示例#5

我们还可以将上述参数与“docker run”命令一起使用,如下所示:

docker run -it -e "USER=test1" --name nginx-con nginx sh

说明:在上面的例子中,我们可以看到我们没有使用’-d’参数,否则它会在后台运行容器并且无法连接到容器,这意味着我们不能使用’-d’和’-it’ 参数。

示例 #6

假设我们必须使用以下配置创建一个名为“my-nginx”的 nginx 容器:

  • 附加一个名为 my-vol 的卷
  • 附加一个名为 my-net 的网络
  • 将内存利用率限制为 256 MB
  • 打开80端口对外访问nginx
  • 将重启策略设置为除非停止
  • 将容器的主机名设置为“my-nginx”

这是实现上述目标的“docker run”命令:

$ docker run -it -v my-vol:/root --network=my-net -m 256m -p 80:80 --restart=unless-stopped -h my-nginx --name my-nginx nginx sh

 

说明:在上面的例子中,我们使用了 ‘-it’ 参数直接连接到容器来验证主机名,否则我们可以使用 ‘-d’ 参数。注意: –在创建容器之前network必须存在。我们可以使用以下命令创建一个简单的network:

docker network create my-net

示例 #7

有时我们创建一个容器用于测试目的,测试后不再需要该容器,因此我们可以使用“-rm”参数在容器停止后删除该容器。这是命令:

docker run --it --rm ubuntu sh

说明:在上面的快照中,我们可以看到在创建 ‘ubuntu’ 容器之前和之后都没有容器在运行,因为一旦我们退出容器,它就会被删除。我们可以使用它直接在命令行中使用 ping 命令来测试两个容器之间的连接。

好处

  1. 与“docker container run”命令相比,“docker run”是运行容器的简短命令。
  2. 它有很多参数可以根据我们的要求配置容器。

使用 run 命令的规则和规定

  1. 在使用“docker run”命令附加到任何容器之前,Docker network必须存在。
  2. 如果 Docker 卷在附加到任何容器时尚不存在,则会创建它。
  3. 将 ‘-d’ 和 ‘-it’ 参数一起使用是没有意义的。
  4. 我们可以为不同的容器使用相同的端口,但不能在主机级别使用,例如,我们可以创建多个 nginx 容器并在每个容器上打开端口 80,但是我们不能在同一端口上对外公开这些容器,我们需要公开每个容器在不同的端口上以从外部访问它。
  5. 某些参数仅适用于特定版本的 Docker,因此建议在使用该参数之前检查兼容性。

结论

‘docker run’ 命令有很多参数,但并不是所有参数都经常使用,所以我们只讨论了最常用的参数。您可以阅读官方文档以了解所有参数或使用“–help”选项获取所有可用参数。

推荐文章

这是 Docker 运行命令的指南。在这里,我们讨论如何在 Docker 中运行docker run命令参数 以及多个示例及其解释。

本文是docker快速入门教程系列的一部分您也可以查看以了解更多信息 –

 


慕源网 » docker run命令参数 | 运行docker命令详解 10

常见问题FAQ

程序仅供学习研究,请勿用于非法用途,不得违反国家法律,否则后果自负,一切法律责任与本站无关。
请仔细阅读以上条款再购买,拍下即代表同意条款并遵守约定,谢谢大家支持理解!

发表评论

开通VIP 享更多特权,建议使用QQ登录