运行和启动Docker容器之间的区别
在实践中,我启动一个容器:docker run a8asd8f9asdf0
如果是这样的话,那么:“docker开始”呢?
在手册中说, 启动一个或多个停止的容器
困惑。
-
run
运行一个图像 -
start
启动一个容器 。
docker run
文件确实提到:
docker run
命令首先在指定的映像上创build一个可写容器层,然后使用指定的命令启动它。也就是说,docker运行相当于API
/containers/create
then/containers/(id)/start
。
你不运行一个现有的容器,你是docker exec(自docker 1.3以来) 。
您可以重新启动退出的容器 。
这是非常重要的问题,答案非常简单但非常重要
- 运行:创build一个新的图像容器并执行该容器,可以创build同一图像的N克隆。 命令是“运行IMAGE_ID” 而不是 “CONTAINER_ID”
- 开始:启动一个先前停止的容器,例如,如果用命令“停止CONTAINER_ID”停止了一个数据库,则可以通过命令“START CONTAINER_ID”来关联同一个容器,并且数据和设置是相同的。
如果你问这个问题,那么图像和图层创build这些图像的基本概念还不清楚。
首先阅读这个链接上的答案, 其中总结了层和图像之间的差异
一旦你了解了这个概念,你就可以更好地理解VonC上面的优秀但高层次的答案。
举例说明:
考虑你的电脑中有一个游戏(iso)的图像。
当您“运行”(将您的映像安装为虚拟驱动器)时,虚拟驱动器将与虚拟驱动器中的所有游戏内容一起创build,游戏安装文件将自动启动。 [运行你的docker镜像 – 创build一个容器,然后启动它。]
但是当你“停止”(类似于docker stop)时,虚拟驱动器仍然存在,但是停止所有进程。 [容器一直存在直到不被删除]
而当你做“开始”(类似于docker开始)时,从虚拟驱动器开始执行游戏文件。 [启动现有容器]
在这个例子中 – 游戏图像是你的Docker镜像,虚拟驱动器是你的容器