Docker容器不断重启

17

我试着使用Rancher。我使用以下命令来启动它:

sudo docker run -d --restart=always -p 8080:8080 rancher/server

然后,我停止并删除了容器。但是,如果我停止并重新启动docker守护程序或重启我的笔记本电脑,并使用“docker ps”命令查找正在运行的容器,rancher服务器将再次运行。如何完全停止/删除它,并确保它不会再次运行。


我尝试停止并删除所有正在运行的容器,然后停止并重新启动Docker守护程序,以查看容器是否会再次启动。它一直在不同的容器ID中重新启动。我不确定发生了什么或者是否存在错误。我重复执行停止删除步骤多次,直到没有容器重新启动为止。现在它似乎终于停止了。 - codefire
5个回答

27

注意:根据问题 11008PR 15348提交 fd8b25c,docker v1.11.2),您可以通过以下方式避免此问题:

sudo docker run -d --restart=unless-stopped -p 8080:8080 rancher/server

在您目前的情况下,由于PR 19116,您可以使用docker update来更新重启策略。

docker update --restart=unless-stopped <yourContainerID_or_Name>

然后停止您的容器,重新启动 docker 守护程序:它将不会重新启动该容器。


OP codefire 在评论中指出了另一个原因

当我第一次运行 start rancher server 命令时,我没有注意到它正在下载。所以我可能尝试了几次这个命令。

这就是为什么即使在停止并删除作为牧场服务器启动的容器之后,作业仍然保持重新启动的原因。
在停止和删除 8+ 个容器之后,它终于停止了

这就是为什么我有别名来快速删除任何已停止的容器


是的,我尝试过并看到了那个PR。当我第一次运行启动rancher服务器命令时,我没有注意到它正在下载。所以我可能尝试了几次那个命令。这就是为什么即使在停止和删除已经作为rancher服务器启动的容器之后,该作业仍然会重新启动。在停止和删除超过8个容器之后,它最终停止了。 - codefire
@codefire 好的,我已经将您的评论包含在答案中以增加可见性。 - VonC

12

它一直重新启动,因为您使用了--restart=always标志

运行

docker logs <CONTAINER_ID>

查看您的代码是否遇到任何错误,导致容器无法正常运行


这帮了我大忙!谢谢。 - ethanjyx

1
感谢您的回答,但对我来说,即使使用VonC的答案,问题仍然存在。 在研究了Kubernetes之后,再次运行镜像。 请使用kubectl get nodes获取您拥有的节点,然后运行:
kubectl drain NODE_ID --delete-emptydir-data --ignore-daemonsets

确实应该可以。 当我写下我的答案时,Kubernetes 在2016年还处于起步阶段。 - VonC
谢谢@VonC。你帮了我很多!这就是为什么我投票支持你的答案的原因! :-) - harryssuperman

1

这些解决方案是正确的!但对于我来说,有一种情况,当这些答案不起作用时。那是因为我在后台运行服务,我没有将其删除,所以即使您删除容器,它也会重新启动,如此往复...... 因此,针对这个特定的问题的答案是

docker service rm service name or id

-2

如果您关闭/停止Docker守护程序,则Docker运行在本地主机上,且在Docker容器内部删除数据,如果您未将数据保存在外部卷中。

docker run -d nginxlogs:/var/log/nginx -p 5000:80 nginx


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接