“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...]
AI 代码解读

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

docker run --name ubuntu_bash --rm -i -t ubuntu bash
AI 代码解读

上述命令将创建一个名为 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...]
AI 代码解读

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

docker exec -it ubuntu_bash bash
AI 代码解读

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

docker exec -d -w /temp ubuntu_bash touch my_file.sh
AI 代码解读
  • -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 命令可以帮助您成为使用这种强大云技术的专业人士。

目录
打赏
0
0
0
0
70
分享
相关文章
《docker高级篇(大厂进阶):4.Docker网络》包括:是什么、常用基本命令、能干嘛、网络模式、docker平台架构图解
《docker高级篇(大厂进阶):4.Docker网络》包括:是什么、常用基本命令、能干嘛、网络模式、docker平台架构图解
236 56
《docker高级篇(大厂进阶):4.Docker网络》包括:是什么、常用基本命令、能干嘛、网络模式、docker平台架构图解
Docker、containerd、CRI-O 和 runc 之间的区别
通过理解这些组件的角色和功能,可以更好地选择和配置容器环境,以满足特定的需求和应用场景。
86 25
Docker 入门全攻略:安装、操作与常用命令指南
Docker 的世界非常广阔,这只是一个开始,请继续探索和学习 Docker 的高级特性和最佳实践。后续也会继续更新相关的理论与实践内容。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
376 78
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
249 6
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
入门级容器技术解析:Docker和K8s的区别与关系
本文介绍了容器技术的发展历程及其重要组成部分Docker和Kubernetes。从传统物理机到虚拟机,再到容器化,每一步都旨在更高效地利用服务器资源并简化应用部署。容器技术通过隔离环境、减少依赖冲突和提高可移植性,解决了传统部署方式中的诸多问题。Docker作为容器化平台,专注于创建和管理容器;而Kubernetes则是一个强大的容器编排系统,用于自动化部署、扩展和管理容器化应用。两者相辅相成,共同推动了现代云原生应用的快速发展。
448 11
Kubernetes(k8s)和Docker Compose本质区别
理解它们的区别和各自的优势,有助于选择合适的工具来满足特定的项目需求。
391 19
《docker高级篇(大厂进阶):5.Docker-compose容器编排》包括是什么能干嘛去哪下、Compose核心概念、Compose使用三个步骤、Compose常用命令、Compose编排微服务
《docker高级篇(大厂进阶):5.Docker-compose容器编排》包括是什么能干嘛去哪下、Compose核心概念、Compose使用三个步骤、Compose常用命令、Compose编排微服务
238 24
《docker高级篇(大厂进阶):5.Docker-compose容器编排》包括是什么能干嘛去哪下、Compose核心概念、Compose使用三个步骤、Compose常用命令、Compose编排微服务
《docker高级篇(大厂进阶):5.Docker-compose容器编排》包括是什么能干嘛去哪下、Compose核心概念、Compose使用三个步骤、Compose常用命令、Compose编排微服务
253 6
容器技术实践:在Ubuntu上使用Docker安装MySQL的步骤。
通过以上的操作,你已经步入了Docker和MySQL的世界,享受了容器技术给你带来的便利。这个旅程中你可能会遇到各种挑战,但是只要你沿着我们划定的路线行进,你就一定可以达到目的地。这就是Ubuntu、Docker和MySQL的灵魂所在,它们为你开辟了一条通往新探索的道路,带你亲身感受到了技术的力量。欢迎在Ubuntu的广阔大海中探索,用Docker技术引领你的航行,随时准备感受新技术带来的震撼和乐趣。
45 16
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等