如何重新启动已停止的docker容器

如何重新启动已停止的docker容器,docker,Docker,我使用以下命令从图像启动docker容器: $ docker run -d myimage /bin/bash -c "mycommand" 当“mycommand”完成时,容器将停止(我假设它已停止),但它不会被删除,因为我可以通过以下命令看到它: $ docker ps -a 是否有任何方法可以使用相同的参数重新启动此容器,并保留由mycommand生成的数据?是,当初始命令完成执行后,容器停止 可以使用以下命令启动已停止的容器: docker start container\u nam

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

$ docker run -d myimage /bin/bash -c "mycommand"
“mycommand”
完成时,容器将停止(我假设它已停止),但它不会被删除,因为我可以通过以下命令看到它:

$ docker ps -a

是否有任何方法可以使用相同的参数重新启动此容器,并保留由mycommand生成的数据?

是,当初始命令完成执行后,容器停止

可以使用以下命令启动已停止的容器:

docker start container\u name

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

docker start-ai容器名称


PS.有一个
docker restart container\u 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

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

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

sudo docker启动容器\u id

上图中已退出容器的命令将被删除

sudo docker start-bba606a95392

输出:

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

Docker认为我们正在尝试同时启动和连接多个容器


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

您对“卷”或“装载主机目录”满意吗?就像上面提到的文档:每次启动后,我的容器都会立即停止。我不知道那是什么意思。使用-ai命令会给出以下响应:无法打开需求文件:[Errno 2]没有这样的文件或目录:“requirements.txt”@geoidesic您能提供更多详细信息吗?您所说的“requirements.txt”文件是什么类型的?@geoidesic,为了解决这个问题,我将入口点更改为只运行sleep 900命令,这样我就可以连接到容器并使用
docker exec-it container\u name bash
在其中运行命令。当我从容器中运行命令时,我可以看到脚本的初始实现失败的原因,并对其进行了修复。@PatS您能分享一下您是如何将
start
sleep
结合起来的吗?我无法运行
exec
接受的答案指出
restart
适用于已经运行的容器