启动支持三个网络的 Docker 容器:默认桥(OAM)、桥(数据输入)和 MacVLAN(数据输出)。问题是 Docker 提供程序似乎在默认桥上设置了所有定义的端口。如何告诉 Terraform 将定义的端口绑定到特定的 Docker 网络?
.tf 文件片段:
ports {
# Data-In (Bridge)
internal = 881
external = 881
}
ports {
# SSH Access on Default Bridge
internal = 22
external = 222
}
networks_advanced {
name = "bridge"
}
networks_advanced {
name = "data-in-net"
}
networks_advanced {
name = "data-out-net"
}
Docker 网络:
# docker network list
NETWORK ID NAME DRIVER SCOPE
1c2441b0b530 bridge bridge local
c68892f0c6e5 host host local
bb45d9dcbad1 none null local
a318d3bf3075 data-out-net macvlan local
af806334c7bf data-in-net bridge local
端口 222 有效,端口 881 无效。
来自运行 Docker 的主机操作系统的 IPTables:
Chain DOCKER (2 references)
target prot opt source destination
ACCEPT tcp -- anywhere 172.17.0.2 tcp dpt:9000
ACCEPT tcp -- anywhere 172.17.0.2 tcp dpt:8000
ACCEPT tcp -- anywhere 192.168.32.2 tcp dpt:601
ACCEPT udp -- anywhere 192.168.32.2 udp dpt:syslog
ACCEPT tcp -- anywhere 172.17.0.3 tcp dpt:881
ACCEPT tcp -- anywhere 172.17.0.3 tcp dpt:https
ACCEPT tcp -- anywhere 172.17.0.3 tcp dpt:ssh
该tcp dpt:881
行需要有一个目的地192.168.32.3
。syslog 容器仅使用 Data-In Docker 网络,因此具有正确的 IP 地址。
任何建议/解决方法?谢谢!:)