docker run 和 docker exec的区别

“docker run”和“docker exec”都是 Docker 容器中用于执行的命令。然而,在不同的情况下,它们的使用有着本质上的区别。

docker run 命令时创建容器时启动容器;docker exec是针对已经创建好的容器执行启动操作;



“docker run”命令

“docker run”通常是在新创建的容器中所使用的命令。 它适用于在没有其他容器运行的情况下,您想要创建一个容器,并且要启动它,然后在其上运行一个进程。它的格式如下所示:

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

在“docker run”命令之后,您必须通过指定镜像来创建容器,同时还可以指定的[OPTIONS]和[ARG...],例如:

docker run --name ubuntu_bash --rm -i -t ubuntu bash

上述命令将创建一个名为 ubuntu_bash 的容器并启动一个 Bash 会话。该示例中所使用的[OPTIONS]和[ARG...]的详细解读如下所示:

 

--name 为容器指定名称,在本例中的容器名称为 ubuntu_bash;


--rm 就像 bash 中的 rm 命令一样,它会删除容器,但这里它会在该容器退出时进行删除;


-i 就是 –interactive 的缩写,它确保了即使没有连接到正在运行的容器,STDIN(标准输入)也会处于打开状态;


-t 也可以使用 –tty 来进行引用,在容器中启动交互式的 bashshell;


容器的镜像应遵循[OPTIONS],这里的是镜像 ubuntu;


紧随镜像后面的部分是您要运行的命令:bash;


想了解更多关于“docker run”的更多[OPTIONS]信息,请查看https://docs.docker.com/engine/reference/commandline/run/。


 “docker exec”命令

“docker exec”适用于在现有容器中运行命令的情况。如果您已经拥有了一个正在运行的容器,并希望更改该容器或从中获取某些内容,那么使用“docker exec”命令就非常合适了。例如,如果您使用了 docker-compose,那么您可能会启动多个容器,并且希望能够在创建它们后访问其中的一个或多个容器。它的格式如下所示:

 

docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

“docker exec”也有着一系列可以指定的[OPTIONS]和[ARG...],尽管您需要确保容器和命令的状态才能执行。您可以使用以下命令在名为 ubuntu_bash 的容器上启动交互式的 bash shell:

docker exec -it ubuntu_bash bash

这里的[OPTIONS] –it 与“docker run”命令中的相同。 更多[OPTIONS]和[ARG...]的示例如下所示:

docker exec -d -w /temp ubuntu_bash touch my_file.sh

-w 后跟目录或文件路径,您可以说明要在哪个工作目录中运行命令;


-d 或 –detached 表示容器将以分离模式运行,因此您仍然可以继续将终端会话和在后台运行的容器一起使用。如果要查看容器发送到 STDOUT 的内容,请不要使用此选项;


该命令用于创建名为 my_file.sh 的文件,在 /temp 目录下运行名为 ubuntu_bash 的容器;

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值