docker-compose`restart: always` 随机不起作用

docker-compose`restart: always` 随机不起作用

我管理一些安装了 Docker CE 的 Debian 服务器,并使用 docker-compose 协调多项服务(每台机器大约 20 个容器)。

每项服务均在 docker-compose 中配置restart: always。但是,有些随机服务(通常每台机器 1-2 个)在主机重启期间会正确关闭但不会重新启动。此行为完全是随机的。有时所有服务都会启动,有时 docker-compose.yml 文件中的某项服务不会重新启动。

以下是 Traefik 正确关闭但未启动的示例:

  1. 配置为自动重启的服务:
$ cat docker-compose.yml
version: '3'

services:
  reverse-proxy:
    image: traefik:1.7
    restart: always
    command: --web
    ports:
      - "80:80"
      - "443:443"
      - "8080:8080"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - ./traefik.toml:/traefik.toml
    networks:
      - web

  1. 退出代码为 128
$ docker-compose ps
         Name                Command        State     Ports
-----------------------------------------------------------
traefik_reverse-proxy_1   /traefik --web   Exit 128
  1. 日志显示服务已正确关闭,但此后没有任何活动迹象:
$ docker-compose logs --tail 6 -t
Attaching to traefik_reverse-proxy_1
reverse-proxy_1  | 2022-01-21T14:05:28.042399112Z time="2022-01-21T14:05:28Z" level=info msg="Stopping server gracefully"
reverse-proxy_1  | 2022-01-21T14:05:28.042450915Z time="2022-01-21T14:05:28Z" level=debug msg="Waiting 10s seconds before killing connections on entrypoint http..."
reverse-proxy_1  | 2022-01-21T14:05:28.042463326Z time="2022-01-21T14:05:28Z" level=debug msg="Waiting 10s seconds before killing connections on entrypoint api..."
reverse-proxy_1  | 2022-01-21T14:05:28.053256515Z time="2022-01-21T14:05:28Z" level=debug msg="Entrypoint api closed"
reverse-proxy_1  | 2022-01-21T14:05:28.053283046Z time="2022-01-21T14:05:28Z" level=debug msg="Entrypoint http closed"
reverse-proxy_1  | 2022-01-21T14:05:28.059721498Z time="2022-01-21T14:05:28Z" level=info msg="Shutting down"
  1. 服务器正常运行时间与关闭消息相对应:
$ uptime
 11:21:31 up 29 days, 20:15,  1 user,  load average: 0.46, 0.43, 0.44
  1. 我的docker版本如下:
$ docker --version
Docker version 19.03.12, build 48a66213fe

我们不要只关注 Traefik,因为哪个容器在何时不启动是完全随机的。

相关内容