在docker-compose
容器组中,容器不需要地址,因为它们可以使用 Docker 仅为该组成员提供的伪 DNS 来相互通信。然后,与外部通信,这是 Docker 喜欢的标准 NAT 回归事务。
如果我使用基于 macvlan 网络的 IP 寻址怎么办?我如何分配一个与整个组共享的地址,而不是仅分配给该组的单个服务。我找到的所有示例和文档不仅不是官方的,而且还在撰写文件中应用了服务级别的地址。从未提及或暗示其他选项。
如果我将带有 IP 地址的这些行从服务移到引用 compose 文件中的 macvlan docker 网络的部分,然后像以前一样保留服务,以便它们使用 NAT 欺骗,但至少在独立的后面主机的地址,可以吗?
我在 GitHub 上找到了这个片段作为示例:
#
# macvlan def
docker network create -d macvlan \
--subnet=192.168.0.0/24 \
--gateway=192.168.0.1 \
--ip-range=192.168.0.100/28 \
-o parent=eth0 vdsm
#
# compose file
services:
dsm:
container_name: dsm
..<snip>..
networks:
vdsm:
ipv4_address: 192.168.0.100 ╮
│ ↙︎ MOVE SOMEWHERE DOWN HERE
networks: ╭────────────────────╯
vdsm: ↓ ← macvlan/EXT NETWORK REF
external: true
我猜,这有点像混合 macvlan+NAT(桥接网络)方法。无论如何,它会起作用吗?
谢谢。