“docker run”和“docker exec”都是 Docker 容器中用于执行的命令。然而,在不一样的状况下,它们的使用有着本质上的区别。javascript
“docker run”命令
“docker run”一般是在新建立的容器中所使用的命令。 它适用于在没有其余容器运行的状况下,您想要建立一个容器,而且要启动它,而后在其上运行一个进程。它的格式以下所示:java
docker run [OPTIONS] IMAGE COMMAND [ARG...]
在“docker run”命令以后,您必须经过指定镜像来建立容器,同时还能够指定的[OPTIONS]和[ARG...],例如:docker
docker run --name ubuntu_bash --rm -i -t ubuntu bash
上述命令将建立一个名为 ubuntu_bash 的容器并启动一个 Bash 会话。该示例中所使用的[OPTIONS]和[ARG...]的详细解读以下所示:shell
- --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/。ubuntu
“docker exec”命令
“docker exec”适用于在现有容器中运行命令的状况。若是您已经拥有了一个正在运行的容器,并但愿更改该容器或从中获取某些内容,那么使用“docker exec”命令就很是合适了。例如,若是您使用了 docker-compose,那么您可能会启动多个容器,而且但愿可以在建立它们后访问其中的一个或多个容器。它的格式以下所示:bash
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
“docker exec”也有着一系列能够指定的[OPTIONS]和[ARG...],尽管您须要确保容器和命令的状态才能执行。您可使用如下命令在名为 ubuntu_bash 的容器上启动交互式的 bash shell:markdown
docker exec -it ubuntu_bash bash
这里的[OPTIONS] –it 与“docker run”命令中的相同。 更多[OPTIONS]和[ARG...]的示例以下所示:ide
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/。ui
了解更多
除了这两个命令以外,还有其余一些具备细微差异的 Docker 命令,例如 run 与 build 与create 的类似之处。了解更多并尝试不一样的 docker 命令能够帮助您成为使用这种强大云技术的专业人士。url