docker run与exec的使用差异

2023年 7月 16日 65.3k 0

run命令和exec是容器的执行命令,但是他们之间存在很大的差异

20190129.png

run

使用此命令在新容器中运行一条命令。它适合没有容器运行的情况,并且你想要创建一个容器,启动它然后在其上运行一个进程。

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

docker run命令之后,必须指定image从中创建容器,但也可以传递可选参数。例如:

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

这将创建一个名为的容器linuxea_bash并启动Bash会话。该示例中使用的选项和参数的更详细分类如下:

  • --name 在这种情况下,为容器指定一个名称 linuxea_bash
  • --rm像bash命令一样,rm它会删除容器,但是这是在当它退出时
  • -i简而言之-interactive,这确保即使没有连接到正在运行的容器,STDIN也会保持打开状态
  • -t,也可以引用-ttybash在容器中启动交互式shell
  • 容器的images取决于你使用什么,这里image是ubuntu
  • image后面的最后一部分是您要运行的命令:bash

EXEC

这适用于要在现有容器中运行命令的情况。如果你已经有一个容器正在运行并希望更改它或从中获取某些内容,那么这样做会更好。例如,如果正在使用docker-compose,则可能会启动多个容器,并且你可能希望在创建它们后访问其中的一个或多个容器。

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

这里的选项-it具有与之相同的效果run。更多选项和参数的示例是:

docker exec -d -w /temp linuxea_bash touch my_file.sh
  • -w 后跟目录或文件路径允许你,说明要在哪个工作目录中运行命令。
  • -d或-detached表示容器将以分离模式运行,因此您仍可以继续将终端会话与在后台运行的容器一起使用。如果要查看容器发送到STDOUT的内容,请不要使用此选项。
  • 该命令touch用于在正在运行的容器linuxea_bash.sh/temp目录中创建名称文件my_file.sh

除这两个命令之外,还有其他docker命令也有一些细微的差别,如run与build,create的相似之处

延伸阅读:

  • docker exec
  • docker run

    学习更多

学习如何使用Docker CLI命令,Dockerfile命令,使用Bash命令可以帮助您更有效地使用Docker应用程序。查看Docker文档和我的其他帖子以了解更多信息。

  • docker目录
  • 白话容器

相关文章

LeaferJS 1.0 重磅发布:强悍的前端 Canvas 渲染引擎
10分钟搞定支持通配符的永久有效免费HTTPS证书
300 多个 Microsoft Excel 快捷方式
一步步配置基于kubeadmin的kubevip高可用
istio全链路传递cookie和header灰度
REST Web 服务版本控制

发布评论