如何设置一个Docker容器使用预先存在的(辅助)网络与固定的MAC地址?



使用下面的Docker Compose,我设置了一个Docker堆栈,它有一个前端一个后端容器。默认情况下,它们都利用内部网桥相互通信。为了从外部访问前端容器,我连接了前端容器连接到另一个网络,该网络将由外部路由器使用一个特殊的Docker网络插件Docker -net-dhcp随机分配一个IP地址。

front-end:
image: gdeflaux/restyaboard-ldap
links:
- back-end
volumes:
- /volume/path/config:/etc/restyaboard
- /volume/path/media:/var/nginx/html/media
back-end:
image: postgres
environment:
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=restyaboard
问题是每次前端容器重新启动,连接到第二个网络的网络端口获得不同的MAC地址。因此,我无法将特定的MAC地址固定到路由器端的特定IP地址。

因此,它导致我的问题-如何设置一个Docker容器使用预先存在的辅助网络与固定的MAC地址?

经过进一步的挖掘,目前不可能为第二个网络分配固定的MAC地址,这正是我试图实现的。为容器分配MAC地址将只应用于一个网络,默认情况下,该网络将始终是内部桥接网络。查看此链接了解更多细节和解释。

有两种解决方法。一种是先从Docker Compose文件创建Docker Stack,然后通过CLI使用Docker network connect——ip="192.168.x.x"将容器连接到外部网络。网络容器命令。这只会在你使用用户配置的子网时起作用,在我的情况下,使用docker-net-dhcp将不起作用。

第二个解决方法是等待网络优先级的特性待实施。查看此链接获取更多信息

最新更新