docker

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > 云和虚拟化 > docker > docker run和exec区别

docker中run和exec有什么区别示例详解

作者:蘋天纬地

这篇文章主要介绍了docker中run和exec有什么区别的相关资料,docker run`用于创建并启动新容器,而docker exec用于在已运行容器中执行命令,前者适用于启动新服务,后者适用于调试和管理运行中的容器,需要的朋友可以参考下

docker run 和 docker exec 都是 Docker 中用来与容器交互的命令,但它们的用途和行为有很大的不同。下面我会详细解释它们之间的区别。

1. docker run

docker run 命令用于 创建并启动一个新的容器,并且可以运行一个命令或指定一个程序。每次使用 docker run 时,都会从镜像创建一个新的容器实例。

用法:

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

特点:

示例:

2. docker exec

docker exec 命令用于 在正在运行的容器中执行一个命令。这不会创建新的容器,而是作用于已启动的容器。

用法:

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

特点:

示例:

3. 主要区别

特性docker rundocker exec
容器生命周期每次运行时都会创建一个新的容器在已有的容器中执行命令,不会创建新容器
用途启动一个新的容器并运行命令/程序在已运行的容器内执行命令
交互性可以使用 -it 选项进行交互式运行容器使用 -it 选项可以交互式进入容器,但容器已在运行
容器状态容器在命令执行完成后会退出(除非使用后台模式)容器会保持运行,命令执行完后容器继续运行
创建容器会创建一个新的容器并启动不会创建新容器,只对现有容器操作
适用场景适用于启动应用、服务、进程或临时任务适用于调试、管理或监控正在运行的容器

4. 何时使用 docker run 和 docker exec

附:docker exec执行多个命令详解

docker exec命令能够在运行着的容器中执行命令。docker exec命令的使用格式:

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

OPTIONS说明:

通常COMMAND只能是一条语句,为了支持多个命令的执行,需要将多个命令连接起来交给Shell,docker exec命令的使用示例如下:

sudo docker exec myContainer bash -c "cd /home/myuser/myproject && git fetch ssh://gerrit_server:29418/myparent/myproject ${GERRIT_REFSPEC} && git checkout FETCH_HEAD";
sudo docker exec myContainer bash -c "cd /home/myuser/myproject;git fetch ssh://gerrit_server:29418/myparent/myproject ${GERRIT_REFSPEC};git checkout FETCH_HEAD";

注意:对于已经暂停或停止了的容器,无法执行docker exec命令,如下将抛出异常:

docker pause myContainer 
docker exec myContainer ...

总结

到此这篇关于docker中run和exec有什么区别的文章就介绍到这了,更多相关docker run和exec区别内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文