Как установить статический ip-адрес, когда контейнер использует network_mode: сервис:

#docker #networking #docker-compose #docker-networking

Вопрос:

Я борюсь с сетями и докером/докер-композицией. Вариант использования :

  • Я использую передачу в качестве клиентского торрента в режиме network_mode с помощью VPN wireguard для обеспечения конфиденциальности.
  • Рядом с ним у меня есть контейнер Jackett и контейнер Sonarr для автоматизации. Проблема в том, что мой локальный ip-адрес моего контейнера Wireguard(отображается в контейнере VPN) постоянно меняется при каждой перезагрузке, но мне нужно, чтобы он был постоянным для Jackett/Sonarr. Я думаю, что я использую network_mode: service:container для использования VPN с моим клиентом передачи, и я понятия не имею, как сделать оба моих контейнера (VPN и передачу) со статическим IP.

Я создаю мост между Jackett, Sonarr и VPN, чтобы они могли общаться между собой.

У вас есть какие-нибудь идеи, как сделать их IP-статику ? Или, в первой половине, VPN со статическим локальным ip-адресом ?

 version: "2.1"
services:
  plex:
    image: plexinc/pms-docker
    container_name: plex
    environment:
      - TZ=Europe/X
      - PLEX_CLAIM=X
    volumes:
      - /home/X/docker/plex_config:/config
      - /home/X/docker/plex_transcode:/transcode
      - /media/data:/data
    ports:
      - 3240:32400
  transmission:
    image: ghcr.io/linuxserver/transmission
    container_name: transmission
    depends_on:
      - vpn
    network_mode: service:vpn
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/X
      - TRANSMISSION_WEB_HOME=/flood-for-transmission/
    volumes:
      - /home/X/docker/trans_config:/config
      - /media/data:/downloads
      - /media/data/watchTorrent:/watch
   # ports:
     # - 9091:9091
     # - 51413:51413
     # - 51413:51413/udp
    restart: unless-stopped
  vpn:
    privileged: true
    image: cmulk/wireguard-docker:buster
    volumes:
     - /etc/wireguard/conf:/etc/wireguard
    networks:
      - net
      - linked
    ports:
      - 5555:5555/udp
      - 9091:9091
      - 51413:51413
      - 51413:51413/udp
    restart: unless-stopped
    devices:
      - /dev/net/tun
    sysctls:
     - net.ipv6.conf.all.disable_ipv6=0
    cap_add:
     - NET_ADMIN
     - SYS_MODULE
  sonarr:
    image: ghcr.io/linuxserver/sonarr
    networks:
      - linked
    container_name: sonarr
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/London
    volumes:
      - /home/X/docker/sonarr/data:/config
      - /media/data/Series:/tv #optional
      - /media/data/:/downloads
    ports:
      - 8989:8989
    restart: unless-stopped
  jackett:
    image: ghcr.io/linuxserver/jackett
    container_name: jackett
    networks:
      - linked
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/London
      - AUTO_UPDATE=true #optional
      - RUN_OPTS=<run options here> #optional
    volumes:
      - /home/X/docker/jack/conf:/config
      - /media/data/:/downloads
    ports:
      - 9117:9117
    restart: unless-stopped
networks:
  net:
  linked:
    driver: bridge
 

Кроме того, когда я ищу IP-адрес внутри передачи с помощью этой команды :

 docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container_id
 

он ничего не возвращает.
Но с контейнером VPN он возвращает мне 2 локальных IP-адреса.
Exemple : 192.168.224.2192.168.208.2

Спасибо за уделенное время!