docker macvlan 静态 ip - 还有一个 dhcp 请求

docker macvlan 静态 ip - 还有一个 dhcp 请求

我正在尝试在我的 Raspberry Pi 上运行 2 个 docker 容器,每个容器都有自己的静态 IP 地址。

到目前为止,我使用 macvlan 网络驱动程序使它正常工作。但出现了以下奇怪的行为:

每当我启动一个容器时,我的路由器 (Fritz!Box 7590) 都会报告一个新的网络设备并为其分配一个新的 IP。容器可以通过其静态 IP 访问,而自动分配的 IP 只是未使用的并填满了 DHCP 租约。每次(重新)启动,都会有一个新的未使用的 IP。

我怎样才能停止这些不必要的 DHCP 请求?

我刚刚开始熟悉 docker,非常感谢您的帮助!

-

我的特定网络和容器配置(我的路由器的家庭网络在 192.168.2.x):

docker network create -d macvlan --subnet=192.168.2.0/24 --gateway=192.168.2.1 -o parent=eth0 home_network

docker run -d --name "diyHue" -v '/mnt/hue-emulator/export/':'/opt/hue-emulator/export/':'rw' -e MAC='02:42:AC:F8:1B:B8' -e IP='192.168.2.241' -p 80:80/tcp -p 443:443/tcp -p 1900:1900/udp -p 2100:2100/udp -p 1982:1982/udp --ip 192.168.2.241 --mac-address 02:42:AC:F8:1B:B8 --network home_network --restart always diyhue/core:latest

docker run --init -d --name="home-assistant" -v /home/pi/homeassistant:/config -v /etc/localtime:/etc/localtime:ro --network home_network --ip 192.168.2.242 --mac-address 02:42:AC:11:CE:10 --restart always homeassistant/raspberrypi3-homeassistant

-

我的其他具有静态 IP 的计算机没有这个问题。它们只是启动,而我的路由器没有给它们新的 IP。docker 主机也没有问题,只有容器有问题。

我刚刚重新启动了一个容器(仅容器,而不是主机)几次,并注意到以下情况:

  • 每个新设备都有我的 docker 主机的主机名(“pi-smarthome”)

  • 每个新设备都有不同的 MAC 地址

似乎 docker 在启动时为容器提供了一个随机的 mac 地址,将它们连接到网络,然后将 mac 地址和 ip 更改为容器的配置。

这是我的路由器的 DHCP 设备列表的一部分:

主机名 - IP 地址 - MAC 地址 - 额外的 DHCP 信息

"pi-smarthome" - 192.168.2.111 - 1A:26:4A:2E:CD:9C - dhcpcd-6.11.5:Linux-4.14.98-v7+:armv7l:BCM2835

"pi-smarthome" - 192.168.2.112 - 2A:16:03:84:CB:C1 - dhcpcd-6.11.5:Linux-4.14.98-v7+:armv7l:BCM2835

"pi-smarthome" - 192.168.2.113 - AE:25:25:0C:58:57 - dhcpcd-6.11.5:Linux-4.14.98-v7+:armv7l:BCM2835

"pi-smarthome" - 192.168.2.114 - 72:D6:5B:7C:3E:0D - dhcpcd-6.11.5:Linux-4.14.98-v7+:armv7l:BCM2835

"pi-smarthome" - 192.168.2.240 - B8:27:EB:B5:3F:67 - no extra dhcp info - (the real docker host)

"PC-192-168-2-241" - 192.168.2.241 - 02:42:AC:F8:1BB8 - no extra dhcp info - (the diyHue container)

"Home" - 192.168.2.242 - 02:42:AC:11:CE:10 - no extra dhcp info - (the home-assistant container)

答案1

我将它设置为 --net=home_network 然后它对我起作用了(而不是 --network 采用 --net。

首先:docker network create -d macvlan --subnet=192.168.2.0/24 --gateway=192.168.2.254 --ip-range=192.168.2.100/28 -o parent=eth0 vlan

第二:docker run -d --name=iot -p 8080:8080 -p 4443:4443 --net=vlan -v /home/ubuntu/data/iot:/home/node/.mozilla-iot -e TZ='Europe/Amsterdam' mozillaiot/gateway:arm

然后我将路由器设置为永不泄露 192.168.2.100 以上的 IP(vlan 现在就是这样做的)这样就不会冲突。

相关内容