我想在容器停止运行时自动重启容器(而不是运行图像)。
我看到的所有示例都提到了 docker run
,但我只想重新启动之前创建的容器。
我尝试将以下内容添加到 yml 文件中的服务定义中,但它没有做任何事情:
restart: always
答案 0 :(得分:1)
你能试试这个吗docker_restart_policy

version: "3.9"
services:
redis:
image: redis:alpine
deploy:
restart_policy:
condition: on-failure
delay: 5s
max_attempts: 3
window: 120s
答案 1 :(得分:1)
容器属性是不可变的,一旦容器被创建,你就不能改变它们中的任何一个。在 docker-compose.yml
中更改服务定义后,您必须重新创建容器 (docker-compose up
) 才能进行更改。使用 restart: always
容器在任何情况下都将在未运行时重新启动。这不仅是在失败之后,在重启之后也是如此。
如果您想重新启动现有容器而不重新创建,您可以使用 cron 脚本:
* * * * * docker ps | grep -q container_name || docker start container_name
每分钟检查一次容器是否已启动,如果未启动,则重新启动它。
UPD:powershell 代码段:
if ( docker ps | Select-String -quiet container_name ) {} else { docker start container_name }