容器网络
小规模docker环境大部分运行在单台主机上,如果公司大规模采用docker,那么多个宿主机上的docker如何互联
Docker默认的内部ip为172.17.42.0网段,所以必须要修改其中一台的默认网段以免ip冲突。
docker18版本修改
# vim /etc/sysconfig/docker-network
DOCKER_NETWORK_OPTIONS= --bip=172.18.42.1/16
#reboot
docker19版本修改
[root@docker ~]# cat /etc/docker/daemon.json
{ "bip": "172.18.0.1/16" }
docker 130上:
# route add -net 172.18.0.0/16 gw 192.168.160.128
docker 128上:
# route add -net 172.17.0.0/16 gw 192.168.160.130
现在两台宿主机里的容器就可以通信了。
容器固定IP
docker安装后,默认会创建三种网络类型,bridge、host和none
显示当前网络:
[root@docker ~]# docker network list
NETWORK ID NAME DRIVER SCOPE
ae90e1033698 bridge bridge local
2165e55c0513 host host local
95b533b1f7da none null local
bridge:网络桥接
默认情况下启动、创建容器都是用该模式,所以每次docker容器重启时会按照顺序获取对应ip地址,这就导致容器每次重启,ip都发生变化
none:无指定网络
启动容器时,可以通过-network=none,docker容器不会分配局域网ip
host:主机网络
docker容器的网络会附属在主机上,两者是互通的
创建固定ip容器:
1、创建自定义网络类型,并且指定网段
# docker network create --subnet=192.168.0.0/16 staticnet
通过docker network ls可以查看网络类型中多了一个staticnet
2、使用新的网络类型创建并启动容器
# docker run -it --name userserver --net staticnet --ip 192.168.0.2 centos:7 /bin/bash
通过docker inspect可以查看容器ip为192.168.0.2,关闭容器并重启,发现容器ip并未发生改变
评论区