Docker Compose 不会重启可靠的容器

问题描述 投票:0回答:1

我不确定我是否正确理解了“重启”选项在 docker 中的工作原理。

下面是一个来自 docker compose 文件的例子。发生的事情是:

  1. Docker 同时启动两个容器。
  2. gluetun 容器建立连接可能需要 15-20 秒
  3. 在这 15-20 秒内,linuxserver-deluge 启动,发现它无法连接到网络并关闭。
  4. gluetun 容器运行
  5. linuxserver-deluge 静止不动,状态为 Stopped 和一些错误,128 或 137。

我希望 Docker 会尝试重新启动 linuxserver-deluge,直到它设法连接到网络。

我的问题是,为什么 Docker 不重启 linuxserver-deluge 容器。我该怎么做才能让第二个容器等待第一个容器,或者强制 Docker 在循环中重新启动第二个容器。

如果重要的话,整个事情都在 Synology DSM 7.1 上运行并由 Portainer 管理。

version: "3"
services:
**  gluetun:**
    image: qmcgaw/gluetun
    container_name: gluetun_vpn
    cap_add:
      - NET_ADMIN
    environment:
      - VPN_SERVICE_PROVIDER=some provider
      - ... other variables
    ports: #uncomment ports below for additional applications
      - ... port mapping 
    volumes:
      - /volume1/docker/gluetun:/gluetun
    network_mode: bridge
    restart: unless-stopped

  linuxserver-deluge:
    image: ghcr.io/linuxserver/deluge
    container_name: deluge_gluetun
**    network_mode: service:gluetun # run on the vpn network**
    environment:
      - ... env variables
    volumes:
      - ... folder mapping
**    restart: always   ** 

我试过用 depend_on 选项调整 compose 文件,但似乎对问题没有影响。

这里

version: "3"
services:
  gluetun:
    image: qmcgaw/gluetun
    container_name: gluetun_vpn
    cap_add:
      - NET_ADMIN
    environment:
      - VPN_SERVICE_PROVIDER=some provider
      - ... other variables
    ports: #uncomment ports below for additional applications
      - ... port mapping 
    volumes:
      - /volume1/docker/gluetun:/gluetun
    network_mode: bridge
    restart: unless-stopped

  linuxserver-deluge:
    image: ghcr.io/linuxserver/deluge
    container_name: deluge_gluetun
    network_mode: service:gluetun # run on the vpn network
    environment:
      - ... env variables
    volumes:
      - /volume1/docker/deluge:/config
      - /volume1/Downloads:/data/torrents
**    depends_on:
      - gluetun**
    restart: always
docker docker-compose synology
1个回答
0
投票

depend_on
不重启依赖服务。这不是它的目的。它的目的是等待依赖的服务开始启动,所以满足依赖的条件

depends_on 表示服务之间的启动和关闭依赖关系。

Compose 实现必须保证依赖服务在启动依赖服务之前已经启动。 Compose 实现可以在启动依赖服务之前等待依赖服务“准备好”。

来自https://docs.docker.com/compose/compose-file/05-services/#depends_on

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.