我看到Docker已经添加了一些叫做重启策略的东西来处理容器的重新启动,例如,重新启动。
虽然这非常有用,但我看到重启策略命令只适用于docker run而不是docker start。所以我的问题是:
docker run
docker start
是否有办法将重新启动策略添加到过去已经创建的容器中?
有两种方法可以修改RestartPolicy:
docker commit
在docker的最新版本中(从1.11开始),你有一个update命令:
update
docker update --restart=always <container>
使用--restart=always策略将在重新引导时处理现有容器的重新启动。
--restart=always
问题是,如果在运行docker -如何禁用容器上的自动重启?< / >中讨论的新版本的映像时,存在< em > < / em >多个容器和--restart=always。
尝试自动删除容器时,它存在的put 选项docker run --rm也会与--restart=always . conf产生问题 . policy
尝试自动删除容器时,它存在的put 选项docker run --rm也会与--restart=always . conf产生问题
docker run --rm
$ docker run --rm --restart always <image> Conflicting options: --restart and --rm
所以在这种情况下,最好选择另一个选项:——重启unless-stopped policy。
$ docker run --rm --restart unless-stopped <image>
此策略不会冲突为docker run --rm,但如docker文档所述:
它类似于--restart=always,除了当容器停止时 (手动或其他方式),即使在Docker守护进程后也不会重新启动 重启。< / p >
因此,当使用这个--restart unless-stopped策略时,为了确保重新启动正在工作,以防关闭终端时意外停止,执行一次在另一个终端,如下所示:
--restart unless-stopped
$ docker ps $ docker restart <container>
等待前一个shell中的kill进程结束,然后关闭它并只留下(不要退出) 在剩余的终端中再次检查容器是否仍在运行:
$ docker ps
如果它仍在运行,您可以安全地重新启动并再次检查应用程序是否正在重新启动,并查看docker是否干净,没有未使用的多个容器。