运行和启动Docker容器之间的区别

问题描述 投票:201回答:4

在实践中我开始一个容器:

docker run a8asd8f9asdf0

如果是这样的话,那会是什么:

docker start

做?

在手册中说

启动一个或多个已停止的容器

docker
4个回答
224
投票

这是一个非常重要的问题,答案非常简单,但基本:

  1. 运行:创建图像的新容器,然后执行容器。您可以创建相同图像的N个克隆。命令是:docker run IMAGE_ID而不是docker run CONTAINER_ID

enter image description here

  1. 开始:启动先前停止的容器。例如,如果您使用命令docker stop CONTAINER_ID停止了数据库,则可以使用命令docker start CONTAINER_ID重新启动同一容器,并且数据和设置将相同。

enter image description here


86
投票
  • run运行图像
  • start开始一个容器。

docker run doc确实提到:

docker run命令首先在指定的图像上创建一个可写容器层,然后使用指定的命令启动它。

也就是说,docker run相当于API /containers/create然后/containers/(id)/start

do not run an existing container, you docker exec to it (since docker 1.3)。 你可以restart an exited container


11
投票

用例子说明:

假设您的计算机中有游戏(iso)图像。

当您使用run(将图像作为虚拟驱动器安装)时,将创建一个虚拟驱动器,其中包含虚拟驱动器中的所有游戏内容,并自动启动游戏安装文件。 [运行您的泊坞窗图像 - 创建一个容器然后启动它。]

但当你stop(类似于docker stop)时,虚拟驱动器仍然存在,但停止所有进程。 [由于容器存在,直到它不被删除]

当你执行start(类似于docker start)时,从虚拟驱动器开始执行游戏文件。 [启动现有容器]

在此示例中 - 游戏图像是您的Docker镜像,虚拟驱动器是您的容器。


3
投票

daniele3004的答案已经相当不错了。

对于像我这样不时混淆runstart的人来说,这只是一个快速而肮脏的公式:

docker run [...] docker pull [...] = + docker start [...]

© www.soinside.com 2019 - 2024. All rights reserved.