如何重启停止的docker容器

时间:2016-09-23 18:02:30

标签: docker

我使用以下命令从图像启动docker容器:

$ docker run -d myimage /bin/bash -c "mycommand"

"mycommand"完成时,容器停止(我想它已停止),但它没有被删除,因为我可以用这个命令看到它:

$ docker ps -a

有没有办法restart此容器具有相同参数并保留mycommand生成的数据?

4 个答案:

答案 0 :(得分:51)

是的,当初始命令完成执行时,容器就会停止。

您可以使用以下方式启动已停止的容器:

docker start container_name

如果要查看命令的输出,则应添加-ai选项:

docker start -ai container_name

PS。有docker restart container_name,但用于重新启动正在运行的容器 - 我相信这不是你的情况。

答案 1 :(得分:4)

首先,$ docker ps -a显示所有容器(正在运行的容器和已停止的容器),因此这就是您没有看到已停止容器的原因。

其次,您可以轻松启动已停止的容器运行:

$ docker start container_name

启动容器后,您可以通过以下方式运行命令:

$ docker exec -it container_name bash -c "mycommand"

您在容器中创建的内容将保留在容器中,只要它存在即可。如果您想要保留数据,即使您的容器已被删除,也可以使用volume

答案 2 :(得分:1)

应该是

$ docker restart container_id # OR
$ docker restart container_name

答案 3 :(得分:0)

enter image description here

从上图中我们可以看到一个容器已启动,其他状态为已退出。

当一个容器退出时,我们仍然可以重新启动它,因为容器停止并不意味着它已经死了或不能再次使用,我们可以很容易地停止,然后在未来的某个时刻再次启动容器。要启动容器备份,我们可以获取它的 ID,然后执行 docker start 并粘贴 ID end。

sudo docker start container_id

上图中退出容器的命令是。

sudo docker start -a bba606a95392

输出:

enter image description here

顺便说一句:在重新启动容器时我们无法替换默认命令,一旦您启动时为容器设置了默认命令,例如,如果我们启动容器覆盖默认命令让我们看看发生了什么:

enter image description here

Docker 认为我们正在尝试同时启动和附加多个容器。

所以当我们启动一个容器并让它退出时,我们可以重新启动它,这将重新发出第一次创建容器时使用的默认命令。它是 Docker 容器生命周期的一部分。