作者:Kation
默认情况下,Docker的容器IP地址是由Docker分配或者在创建容器时指定的。
某些场景下,我们需要把容器部署在局域网内部的网络,比如使用macvlan或者ipvlan网络。
但由局域网内的DHCP服务器为容器分配IP地址,Docker默认情况下是做不到的。
有一个开源Docker插件能帮助我们实现这个功能:devplayer0/docker-net-dhcp: Docker network driver for networking on a host bridge with DHCP-allocated IP addresses (github.com)
支持x86、x64、arm-v7、arm-v8的CPU
安装插件
使用命令行安装Docker插件
docker plugin install ghcr.io/devplayer0/docker-net-dhcp:release-linux-amd64
出现提示时,按y继续安装
Plugin “ghcr.io/devplayer0/docker-net-dhcp:release-linux-amd64” is requesting the following privileges:
– network: [host]
– host pid namespace: [true]
– mount: [/var/run/docker.sock]
– capabilities: [CAP_NET_ADMIN CAP_SYS_ADMIN CAP_SYS_PTRACE] Do you grant the above permissions? [y/N]
查看本地网络
在创建Docker网络前,先使用ifconfig命令查看本地网络,记住你想要部署容器的网络名称
创建Docker网络
使用以下命令创建网络,
本地网络名称填写上方命令看到的网络名称,例如我这里是br-lan.90
Docker网络名称任意填写不重复的名称,例如app
注意,如果不是x86架构64位CPU,需将amd64替换为:
-
x86架构32位CPU:386
-
ARM架构32位CPU:arm-v7
-
ARM架构64位CPU:arm-v8
docker network create -d ghcr.io/devplayer0/docker-net-dhcp:release-linux-amd64 –ipam-driver null -o bridge=本地网络名称 Docker网络名称
使用IPv6
如果你的网络支持IPv6,插件也是能够支持IPv6的分配的,创建网络的命令有所不同
docker network create -d ghcr.io/devplayer0/docker-net-dhcp:release-linux-amd64 –ipam-driver null -o bridge=本地网络名称 -o ipv6=true Docker网络名称
最后
网络创建好后,在创建容器时,添加参数“–net Docker网络名称”即可使用新创建的网络,使用局域网DHCP服务器分配IP地址
另外,你还可以通过添加参数“–mac-address MAC地址”(例如14:57:da:38:52:2a)指定容器的MAC地址,并在DHCP服务器为该MAC地址分配一个固定IP地址
阅读更多网络存储精彩内容,可前往什么值得买查看