我可以启用自动重启--restart=always,但在我停止容器后,如何关闭该属性?
我通常运行一个网络服务器,通常映射端口80:
docker run -d --restart=always -p 80:80 -i -t myuser/myproj /bin/bash
Run Code Online (Sandbox Code Playgroud)
但有时我想运行我的图像的较新版本,但我想保留旧容器.问题是,如果有多个容器--restart=always,其中只有一个(随机?)启动,因为它们都在主机上争用端口80.
tha*_*tah 266
您可以使用该--restart=unless-stopped选项,如@Shibashis所述,或更新重启策略(这需要docker 1.11或更新版本);
请参阅文档docker update和Docker重启策略.
docker update --restart=no my-container
Run Code Online (Sandbox Code Playgroud)
更新现有容器的重启策略(my-container)
Fly*_*ngV 51
使用以下命令禁用所有自动重启(守护进程)容器。
docker update --restart=no $(docker ps -a -q)
Run Code Online (Sandbox Code Playgroud)
使用以下命令禁用重启单个容器。
docker update --restart=no the-container-you-want-to-disable-restart
Run Code Online (Sandbox Code Playgroud)
理性:
Docker 提供重启策略来控制您的容器是在退出时自动启动,还是在 Docker 重启时自动启动。当 Docker 运行关键服务时,这通常非常有用。
笔记
如果您正在使用 docker-compose,这可能很有用。
restart no 是默认的重启策略,它在任何情况下都不会重启容器。指定 always 时,容器始终重新启动。如果退出代码指示失败错误,则失败策略会重新启动容器。
restart: "no"
restart: always
restart: on-failure
restart: unless-stopped
restart: always
Run Code Online (Sandbox Code Playgroud)
如果您有一群重新启动容器的容器,则无论重新启动选项如何,该群都会重新启动您停止或运行的所有容器。这是一个功能,而不是错误。
确保您没有运行忘记的服务:
docker service ls
Run Code Online (Sandbox Code Playgroud)
然后,您可以停止服务
docker service rm <service id discovered with previous command>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
49253 次 |
| 最近记录: |