即使退出代码为 2,docker-compose 也不会重新启动我的容器docker-compose ps
。
Name Command State Ports
-----------------------------------------------------------------------------
app_autoheal_1 /docker-entrypoint autoheal Up (healthy)
seafile /sbin/my_init -- /scripts/ ... Exit 2
docker-compose.yaml
它在with中定义restart: always
。
version: '3.4'
services:
autoheal:
restart: always
image: willfarrell/autoheal
environment:
- AUTOHEAL_CONTAINER_LABEL=all
volumes:
- /var/run/docker.sock:/var/run/docker.sock
seafile:
image: seafileltd/seafile-mc:latest
restart: always
container_name: seafile
healthcheck:
test: ["CMD-SHELL", "test $$(curl -k https://localhost/api2/ping/) = '\"pong\"'"]
interval: 30s
timeout: 20s
retries: 3
start_period: 30s
在哪些情况下会发生这种情况?
答案1
Docker 保留容器退出值 2。容器应exit 1
正确触发健康检查。
命令的退出状态表示容器的健康状态。可能的值包括:
- 0:成功 - 容器运行正常,可供我们使用
- 1:不健康 - 容器无法正常工作
- 2:保留-不要使用此退出代码
来源:https://docs.docker.com/engine/reference/builder/#healthcheck