docker安装后,默认会创建三种网络类型,bridge、host和none,可通过如下命令查看
sudo docker network ls
bridge:网络桥接
默认情况下启动、创建容器都是用该模式,所以每次docker容器重启时会按照顺序获取对应ip地址,这就导致容器每次重启,ip都发生变化
none:无指定网络
启动容器时,可以通过–network=none,docker容器不会分配局域网ip
host:主机网络
docker容器的网络会附属在主机上,两者是互通的。
创建固定ip容器
1、创建自定义网络类型,并且指定网段
sudo docker network create --subnet=192.168.0.0/16 staticnet
通过docker network ls可以查看到网络类型中多了一个staticnet

2、使用新的网络类型创建并启动容器
sudo docker run -it --name userserver --net staticnet --ip 192.168.0.2 ubuntu /bin/bash
通过docker inspect可以查看容器ip为192.168.0.2,关闭容器并重启,发现容器ip并未发生改变

如果需要设置容器请求出去的IP,使用IPtables
iptables -t nat -l POSTROUTING -o eth0 -d 0.0.0.0/0 -s 172.18.0.10 -j SNAT --to-source 103.213.245.111