Difference between Running and Starting a Docker container
在实际操作中,我会:
1
| docker run a8asd8f9asdf0 |
如果是这样的话,你会怎么做:
怎么办?
手册上写着
Start one or more stopped containers
- 运行=创建+启动
- 我希望手术也包括"执行"
- 可能有帮助:chat.stackoverflow.com/script/76919
- @莫尼卡·埃德德德尼克在那儿,是docker execute?
这是一个非常重要的问题,答案很简单,但很基本:
运行:创建图像的新容器,并执行该容器。可以创建同一图像的n个克隆。命令是:docker run IMAGE_ID而不是docker run CONTAINER_ID。
启动:启动以前停止的容器。例如,如果使用命令docker stop CONTAINER_ID停止了数据库,则可以使用命令docker start CONTAINER_ID重新启动同一容器,数据和设置将相同。
- 是否需要为停止的容器创建一个卷,以使数据保持不变?
- @写入容器默认联合文件系统层的文件和写入卷的文件之间的loganphillips生命周期差异是:删除容器时,容器的联合文件系统层数据总是丢失(docker rm container_id)。另一方面,除非在命令行上显式地提供-v选项,否则卷数据在容器删除后仍然有效。可以直接检查主机系统上的卷位置。看这篇文章
docker run文件确实提到:
The docker run command first creates a writeable container layer over the specified image, and then starts it using the specified command.
That is, docker run is equivalent to the API /containers/create then /containers/(id)/start.
您不运行现有的容器,而是对其执行Docker操作(从Docker 1.3开始)。您可以重新启动退出的容器。
- @塔里克,你不需要把-i添加到docker run中来实现交互过程吗?我是说,docker run需要一个图像来运行容器。
- 似乎有一个空间给某人写一个更详细的答复。答案看起来不是很有解释性。
- 我的下一个问题是什么-the-difference-between-a-container-and-an-image stackoverflow.com/questions/21498832/…
举例说明:
假设您的计算机中有一个游戏(ISO)图像。
当您run时(将您的映像安装为虚拟驱动器),将创建一个虚拟驱动器,其中包含虚拟驱动器中的所有游戏内容,并自动启动游戏安装文件。[运行Docker映像-创建容器,然后启动它。]
但是,当您使用ecx1(4)(类似于docker stop)时,虚拟驱动器仍然存在,但会停止所有进程。[因为容器存在,直到它未被删除]
当你执行start时(类似于docker start),游戏文件从虚拟驱动器开始执行。[正在启动现有容器]
在这个例子中,游戏图片是你的Docker图片,虚拟驱动器是你的容器。
丹尼尔3004的回答已经很好了。
对于像我这样经常混淆run和start的人来说,这只是一个快速而肮脏的公式:
docker run [...]=docker pull [...]+docker start [...]。