问题描述
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
任何帮助将不胜感激,因为我可能只是遗漏了一小部分
解决方法
绝对删除文件中的所有 networks:
设置。请勿尝试手动为容器分配 IP 地址或配置其 MAC 地址。
您的容器将可以通过您主机的 IP 地址访问,每个容器使用第一个 ports:
数字。就网络上的其他主机而言,容器中的进程与不在容器中运行的其他服务没有区别。
在大多数情况下,您也不需要手动设置 container_name:
或 hostname:
。在 Docker 文档的 Networking in Compose 中有 Compose 网络环境的其他详细信息,尽管这主要集中在容器之间的连接上。您通常不需要考虑容器私有 IP 地址或(特别是)容器网络环境中的人工 MAC 地址。