1. Docker三种网络模式
docker安装后,默认会创建三种网络类型,bridge、host和none
1 | docker network ls |
- bridge:网络桥接[默认模式]
默认情况下启动、创建容器都是用该模式,所以每次docker容器重启时会按照顺序获取对应ip地址,这就导致容器每次重启,ip都发生变化 - none:无指定网络
启动容器时,可以通过–network=none,docker容器不会分配局域网ip - host:主机网络
docker容器的网络会附属在主机上,两者是互通的。
2. 配置固定IP的容器
创建自定义网络,并指定一个子网网段
1
2
3
4
5
6
7
8docker network create --subnet=172.18.0.0/16 docker_net
docker network ls
NETWORK ID NAME DRIVER SCOPE
631fadbc4865 bridge bridge local
e41e337d212b docker_net bridge local
2fe72a388b82 host host local
09474b45c7bf none null local运行Docker容器【指定IP地址】
1
docker run -itd --name centos_test --network docker_net --ip 172.18.0.2 centos:latest /bin/bash
注:
必须在自定义网络上给容器指定IP地址
由于我们创建了一个自定义网络,通过ip address可以看到新网卡名称为br-e41e337d212b,故还需要在iptables中添加此网卡的转发规则
1
2
3
4docker_net
iptables -A FORWARD -i br-e41e337d212b -o eth0 -j ACCEPT
iptables -A FORWARD -i eth0 -o br-e41e337d212b -j ACCEPT
iptables -A FORWARD -i br-e41e337d212b -o br-e41e337d212b -j ACCEPT允许br-e41e337d212b与eth0物理网卡转发,允许br-e41e337d212b网络的容器间转发
docker 与 iptables网络转发: 参考
- 本文作者: GaryWu
- 本文链接: https://garywu520.github.io/2020/01/06/docker固定容器IP/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!