如何重新启动停止的码头容器

我使用以下命令从一个映像启动一个 docker 容器:

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

"mycommand"完成时,容器被停止(我假设它被停止了) ,但是它没有被删除,因为我可以通过以下命令看到它:

$ docker ps -a

有没有什么办法使 restart这个容器具有相同的参数,并保持由 mycommand生成的数据?

156327 次浏览

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

可以使用以下方法启动停止的容器:

docker start container_name

如果你想看到你的命令的输出,那么你应该添加 -ai选项:

docker start -ai container_name

附言。有一个 docker restart container_name,但这是用来重新启动一个运行的容器-我相信这不是你的情况。

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

其次,你可以很容易地启动一个停止运行的容器:

$ docker start container_name

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

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

在容器中创建的内容只要存在,就会一直保留在容器中。如果您想保留数据,即使您的容器被删除,您也可以使用 音量

应该是的

$ docker restart container_id # OR
$ docker restart container_name

enter image description here

从上面的图片中我们可以看到一个容器是向上的,另一个状态是退出的。

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

Sudo docker start Container _ id

对于上面图片中的退出集装箱的命令将是。

Sudo docker start-a bba606a95392

输出:

enter image description here

顺便说一下: 当重新启动容器时,我们不能替换默认命令,一旦你启动了容器的默认命令,例如,如果我们启动容器覆盖默认命令,让我们看看发生了什么:

enter image description here

Docker 认为我们试图同时启动并连接多个容器。

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

不幸的是,如果重新启动 VM/System 并显示

mysql-tls:5.7       "docker-entrypoint.s…"   18 hours ago   Exited (255) 44 seconds ago

回答:

启动容器

码头启动 mysql

或者

Docker 启动 your _ Container _ name