我使用以下命令从图像启动docker容器:
$ docker run -d myimage /bin/bash -c "mycommand"
当"mycommand"
完成时,容器停止(我想它已停止),但它没有被删除,因为我可以用这个命令看到它:
$ docker ps -a
有没有办法restart
此容器具有相同参数并保留mycommand
生成的数据?
答案 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)
从上图中我们可以看到一个容器已启动,其他状态为已退出。
当一个容器退出时,我们仍然可以重新启动它,因为容器停止并不意味着它已经死了或不能再次使用,我们可以很容易地停止,然后在未来的某个时刻再次启动容器。要启动容器备份,我们可以获取它的 ID,然后执行 docker start 并粘贴 ID end。
sudo docker start container_id
上图中退出容器的命令是。
sudo docker start -a bba606a95392
输出:
顺便说一句:在重新启动容器时我们无法替换默认命令,一旦您启动时为容器设置了默认命令,例如,如果我们启动容器覆盖默认命令让我们看看发生了什么:
Docker 认为我们正在尝试同时启动和附加多个容器。
所以当我们启动一个容器并让它退出时,我们可以重新启动它,这将重新发出第一次创建容器时使用的默认命令。它是 Docker 容器生命周期的一部分。