起因
在项目中启用多个容器,有时候需要多个容器间进行通信,就需要绑定其他容器,但是docker每次重启后,容器的IP地址都会变化,所以需要固定容器IP。
docker默认网络
Docker安装后,默认会创建下面三种网络类型:
1 | $ docker network ls |
bridge:桥接网络
默认情况下启动的Docker容器,都是使用bridge,Docker安装时创建的桥接网络,每次Docker容器重启时,会按照顺序获取对应的IP地址,这个就导致重启下,Docker的IP地址就变了none:无指定网络
使用--network=none
,docker 容器就不会分配局域网的IPhost: 主机网络
使用--network=host
,此时,Docker 容器的网络会附属在主机上,两者是互通的。
例如,在容器中运行一个Web服务,监听8080端口,则主机的8080端口就会自动映射到容器中。
启动 Docker的时候,用 --network
参数,可以指定网络类型,如:
1 | ➜ ~ docker run -itd --name test1 --network bridge centos:latest /bin/bash |
docker创建自定义网络并固定IP
首先,启动Docker容器的时候,使用默认的网络是不支持指派固定IP的,如下:
1 | ➜ ~ docker run -itd --net bridge --ip 172.17.0.10 centos:latest /bin/bash |
因此,需要创建自定义网络,下面是具体的步骤:
自定义网络
1 | ➜ ~ docker network create --subnet=172.72.0.0/16 mynetwork |
创建容器并固定IP
1 | ➜ ~ docker run -itd --name networkTest1 --network mynetwork --ip 172.72.0.2 centos:latest /bin/bash |
进入容器查看IP
1 | [root@ec8e31938fe7 /]# ifconfig |