docker compose 的网络 IP 地址

时间:2021-01-12 19:52:10

标签: docker docker-compose docker-networking docker-stack qnap

tl;dr 我希望此堆栈中的每个容器都使用相同的 IP 和 MAC 地址并位于我的本地网络上,但需要有关如何操作的帮助

对于初学者,我是 docker 和 docker-compose 的新手。我为我的 Plex 服务器制作了一个 docker-stack(其中三个,一个用于按一般类别/电视节目、音乐和假期分类的电影),每个服务器在我的本地网络上都有自己的 IP 地址和 MAC,现在我想为我的一些媒体管理工具制作第二个堆栈,但这次我希望整个堆栈使用一个 IP 地址和 MAC 地址,但我一直无法弄清楚如何正确地做到这一点/所以它可以工作 这是在 QNAP NAS (TVS1282v3/QTS) 上运行的,但我正在通过 CLI 工作,因为我认为如果我通过容器站执行 docker-compose 它不会为我创建网络

version: '2.4'

services:
  Sonarr:
    image: linuxserver/sonarr
    container_name: Sonarr
    environment:
      - TZ=AMERICA/Denver
      - name= Sonarr
    volumes:
      - /share/MediaManagement/Sonarr/config:/config:rw
      - /share/MediaManagement/rip:/rip:rw
      - /share/Plex:/Plex:rw
    ports:
      - 8989:8989
    restart: unless-stopped

  Radarr:
    image: linuxserver/radarr
    container_name: Radarr
    environment:
      - TZ=AMERICA/Denver
      - name= Radarr
    volumes:
      - /share/MediaManagement/Radarr/config:/config:rw
      - /share/MediaManagement/rip:/rip:rw
      - /share/Plex:/Plex:rw
    ports:
      - 7878:7878
    restart: unless-stopped

  Lidarr:
    image: linuxserver/lidarr
    container_name: Lidarr
    hostname: Lidarr
    environment:
      - TZ=AMERICA/Denver
      - name= Lidarr
    volumes:
      - /share/MediaManagement/Lidarr/config:/config:rw
      - /share/MediaManagement/rip:/rip:rw
      - /share/Plex:/Plex:rw
    ports:
      - 8686:8686
    restart: unless-stopped

  networks:
    qnet-static:
      ipv4_address: 192.168.2.100
    mac_address: 05:4A:AA:08:51:43
    
networks:
  qnet-static:
    driver: qnet
    ipam:
      driver: qnet
      options:
        iface: "eth0"
      config:
        - subnet: 192.168.2.0/23
          gateway: 192.168.2.1

我也尝试过,就像在我放置的 Plex 撰写文件中的设置方式一样

services:
  NameOfService:
    mac_address: 05:4A:AA:08:51:43
    networks:
      qnet-static:
        ipv4_address: 192.168.2.100
....
networks: ##At the end, not in each service##
  qnet-static:
    driver: qnet
    ipam:
      driver: qnet
      options:
        iface: "eth0"
      config:
        - subnet: 192.168.2.0/23
          gateway: 192.168.2.1

在每个服务中,但只有第一个容器工作......

我也曾经尝试过这个,但仍然没有运气/它的语法是错误的

networks:
  qnet-static:
    driver: qnet
    ipam:
      driver: qnet
      options:
        iface: "eth0"
      config:
        - subnet: 192.168.2.0/23
          gateway: 192.168.2.250
    ipv4_address: 192.168.2.100
  mac_address: 05:4A:AA:08:51:43

任何帮助将不胜感激,因为我可能只是遗漏了一小部分

1 个答案:

答案 0 :(得分:0)

绝对删除文件中的所有 networks: 设置。请勿尝试手动为容器分配 IP 地址或配置其 MAC 地址。

您的容器将可以通过您主机的 IP 地址访问,每个容器使用第一个 ports: 数字。就网络上的其他主机而言,容器中的进程与不在容器中运行的其他服务没有区别。

在大多数情况下,您也不需要手动设置 container_name:hostname:。在 Docker 文档的 Networking in Compose 中有 Compose 网络环境的其他详细信息,尽管这主要集中在容器之间的连接上。您通常不需要考虑容器私有 IP 地址或(特别是)容器网络环境中的人工 MAC 地址。

相关问题