docker run
和docker create
命令有什么区别?
我通常使用run
但有时在文档中我看到create
。
Docker' --help
告诉
create Create a new container
run Run a command in a new container
当我们需要将命令传递给新容器时,是否意味着使用了run
?那么create
的目标是什么?
答案 0 :(得分:81)
来自docker documentation
docker create命令在其上创建一个可写容器层 指定的映像并准备运行指定的命令。该 然后将容器ID打印到STDOUT。这
类似于docker run -d ,但容器永远不会启动。然后,您可以使用docker start命令随时启动容器。 非常有用您想要设置容器配置提前 的时间,以便在您需要时随时启动。最初的 创建新容器的状态。
答案 1 :(得分:71)
从技术上讲,docker run
= docker create
+ docker start
。
答案 2 :(得分:18)
docker create
命令creates a writeable container from the image and prepares it for running。
docker run
命令creates the container (same as docker create
) and starts it。
答案 3 :(得分:4)
我是码头工人的新手,刚开始玩它;
我认为 docker run 主要执行以下操作:(按...的顺序) docker create , docker start ,< strong> docker attach ,因为在执行'run'命令后它会立即附加到活动shell。
答案 4 :(得分:2)
创建容器:
启动容器:
使用单个命令创建和启动:
现在要了解,我们必须深入了解创建和启动。
创建容器的过程是从镜像中获取文件系统,并准备好在新容器中使用。当我们创建容器时,我们只是准备或设置用于创建容器以实际启动容器的文件系统快照。
所以创建容器是关于启动文件系统的,它是关于实际执行启动命令的。 为了启动容器,我们实际上执行了可能启动进程的启动命令。
让我们在终端中看到它: 当我运行命令“sudo docker create hello-world”时,它会打印以下输出。
在输出中,我们看到打印出的字符。这是刚刚创建的容器的 ID,现在我可以通过运行 Docker start 在这个容器内实际执行 hello world 命令。
那么这里发生了什么,首先我们通过准备好文件系统来支持容器。 之后,我们实际上使用 Docker start 执行了主要的启动命令。
docker start 命令中的-a 用于观察容器的输出并将其打印到终端。
因此 Docker run 和 docker start 之间的区别非常小,默认情况下,Docker run 将显示所有日志或来自容器的所有信息。默认情况下 Docker start 是相反的 Docker start 不会向您显示来自终端的信息。
现在您知道什么时候需要使用运行/创建/启动
答案 5 :(得分:1)
其他答案已经涵盖了这一点,但我认为我会展示相同的shell命令行,因为它非常清楚:
$ docker run myimage
与
相同$ docker start -a $(docker create myimage)
此处,docker create
用于从命名图像创建容器并输出创建的容器ID ,docker start
用于启动具有该ID的容器。 -a
选项会导致终端附加,以便容器在前台运行,这是docker run
的默认行为。
已创建但从未启动的容器将具有Created
状态;这可以通过docker container ls -a
看到。
答案 6 :(得分:-2)
Docker运行基本上是用于在容器中运行命令。
docker run -it <Container Name> /bin/bash
以上是用于创建bash终端。并让我们在容器中使用bash命令。
Docker create 是从Docker Image创建容器。
docker create -d /var/lib:/var/lib --name docker-ubuntu ubuntu
以上是为docker创建一个名为&#34; docker-ubuntu&#34;的容器。来自图像&#34; ubuntu&#34;