Docker Network
- 注意
- 创建的网络内部都会启动 DHCP 无法使用外部 DHCP
- 使用外部 DHCP 需要实现 IPAM - 目前版本没有 DHCP 的 IPAM
- 如果想要创建 interface 则需要 NET_ADMIN 然后映射设备 - 例如 /dev/net/tun
- 网络模式
- host - 使用主机网络
- macvlan - 使用主机的一张网卡做 macvlan
- 不需要额外的 bridge
- 但主机与容器无法使用该网卡互通
- bridge - 桥接 - 默认模式
- overlay - 一般用于跨主机网络
- none - 不需要网络
- IPAM
- 目前内建的 IPAM 驱动 docker/libnetwork/ipams
- default - 默认按顺序获取 IP
- null - 网络为 none 时使用
- remote - 指定不存在的则会尝试作为 IPAM 插件进行初始化
- 目前内建的 IPAM 驱动 docker/libnetwork/ipams
- 参考
# 不指定 subnet 则是从 172.17 继续往后增加
docker network create appnet -o 'com.docker.network.bridge.name=appnet'
# 添加 slave 网卡以便互通
# ip li set dev mynet master appnet
# 使用 eth1 作为上级 - 无法通过 eth1 互通 - 如果有 host 有两个网口则可以
# 可以与主机互通的容器网络,但会自行设置 ip 而不是使用 dhcp
docker network create -d macvlan --subnet=192.168.1.0/24 --gateway=192.168.1.1 -o parent=eth1 appnet
# 查看容器监听
pid=$(docker inspect -f '{{.State.Pid}}' container_name_or_id)
sudo nsenter -t $pid -n netstat