docker run
和docker create
命令有什么区别?
我经常使用run
但有时在我看到的文档中create
.
码头工人--help
告诉
create Create a new container
run Run a command in a new container
Run Code Online (Sandbox Code Playgroud)
这是否意味着run
在我们需要将命令传递给新容器时使用?那么目的是create
什么?
DAX*_*lic 91
来自docker 文档
docker create命令在指定的映像上创建可写容器层,并准备运行指定的命令.然后将容器ID打印到STDOUT.这类似于docker run -d,但容器从未启动过.然后,您可以使用docker start命令在任何位置启动容器.
这是时非常有用,你要建立一个容器配置提前 的时间,以便它准备好,当你需要它来启动.创建新容器的初始状态.
小智 91
从技术上讲,docker run
= docker create
+ docker start
.
其他答案涵盖了这一点,但我想我会显示等效的 shell 命令行,因为它非常清楚:
$ docker run myimage
Run Code Online (Sandbox Code Playgroud)
是相同的
$ docker start -a $(docker create myimage)
Run Code Online (Sandbox Code Playgroud)
在这里,docker create
用于从命名图像创建容器并输出创建的容器 id并docker start
用于使用该 id 启动容器。该-a
选项会导致终端附加,以便容器在前台运行,这是docker run
.
已创建但从未启动的容器将具有Created
状态;这可以通过docker container ls -a
.
我是 docker 新手,刚开始玩它;
我的看法是docker run基本上执行以下操作:(按……的顺序)docker create、docker start、docker attach,因为它会在您执行“运行”命令后立即附加到活动 shell 。
创建一个容器:
启动一个容器:
使用单个命令创建并启动:
现在要理解,我们必须深入挖掘“创建”和“开始”。
创建容器的过程是从映像中获取文件系统,并准备好在新容器中使用。当我们创建容器时,我们只是准备或设置文件系统快照以用于创建容器以实际启动容器。
因此,创建容器是关于文件系统的启动,它是关于实际执行启动命令。为了启动容器,我们实际上执行可能启动进程的启动命令。
让我们在终端中查看它:当我运行命令“sudo docker create hello-world”时,它会打印以下输出。
在输出中我们看到打印出的字符。这是刚刚创建的容器的 ID,现在我可以通过运行 Docker start 在该容器内实际执行 hello world 命令。
那么这里发生了什么,首先我们通过准备好文件系统来支撑容器。然后,我们实际上使用 Docker start 执行了主要启动命令。
docker start 命令中的-a用于监视容器的输出并将其打印到终端。
所以 Docker run 和 docker start 之间的区别非常小,默认情况下 Docker run 会显示所有日志或来自容器的所有信息。默认情况下,Docker 启动是相反的,Docker 启动不会向您显示来自终端的信息。
现在您知道何时需要使用运行/创建/启动
归档时间: |
|
查看次数: |
32012 次 |
最近记录: |