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

20190129

run#

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

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

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

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

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

EXEC#

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

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

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

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

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

延伸阅读: