开发者社区> docker公司> 正文

“docker run”VS“docker exec”,这两个命令有区别吗?

简介: “docker run”和“docker exec”都是 Docker 容器中用于执行的命令。然而,在不同的情况下,它们的使用有着本质上的区别。
+关注继续查看

screenshot

出品丨Docker公司(ID:docker-cn)
编译丨小东
每周一、三、五晚6点10分 与您不见不散!


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


“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 的容器;

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


了解更多

除了这两个命令之外,还有其他一些具有细微差别的 Docker 命令,例如 run 与 build 与create 的相似之处。了解更多并尝试不同的 docker 命令可以帮助您成为使用这种强大云技术的专业人士。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
docker基础容器中vi/vim命令用不了
apt-get update 更新源 apt-get install vim 下载安装
10 0
Docker基础命令(常用的docker命令)
Docker基础命令(常用的docker命令)
15 0
开发专题 | 2:如何在 docker 容器内部运行 docker命令
有些场景在容器内部需要调用 `docker` 命令。为此,本文梳理2种可以在容器内部执行`docker`命令的方法。
16 0
`s local invoke` 命令需要使用到 Docker
`s local invoke` 命令需要使用到 Docker
9 0
普通用户使用docker命令遇到提示需要提升权限时的解决方法
普通用户使用docker命令遇到提示需要提升权限时的解决方法
14 0
docker中命令docker images
docker中命令docker images
9 0
docker 快速搭建mysql(一个命令直接搭建完成)
docker 快速搭建mysql(一个命令直接搭建完成)
29 0
Docker命令
Docker命令
40 0
Docker分享-常用命令小册子(包括清理命令)
Docker分享-常用命令小册子(包括清理命令)
45 0
Docker CLI命令是干什么的?底层原理是什么?
Docker CLI命令是干什么的?底层原理是什么?
179 0
docker run 命令是干什么的?底层原理是什么?
docker run 命令是干什么的?底层原理是什么?
161 0
【Docker系列】docker镜像与容器基本操作命令(二)
【Docker系列】docker镜像与容器基本操作命令(二)
170 0
【Docker系列】docker镜像与容器基本操作命令(一)
【Docker系列】docker镜像与容器基本操作命令
119 0
【Docker系列】docker容器命令整理合集
【Docker系列】docker容器命令整理合集
83 0
docker:docker prune命令 可定时清理不常用数据
docker:docker prune命令 可定时清理不常用数据
266 0
+关注
docker公司
文章
问答
视频
相关电子书
更多
应用 Docker 进行持续交付:用技术改变交付路程
立即下载
从Docker到容器服务
立即下载
Docker@Alibaba——超大规模Docker化的实战经验
立即下载