1.创建一个bridge(桥接网络):bridge-network
docker network create bridge-network --subnet=172.18.0.0/16
[root@es1 nginx]# docker network create bridge-network --subnet=172.18.0.0/16
Error response from daemon: Pool overlaps with other one on this address space
--这个地址空间被占用
docker network create bridge-network --subnet=172.20.0.0/16
[root@es1 nginx]# docker network create bridge-network --subnet=172.20.0.0/16
a310a3bf09c7dea1610b2bb79f06a6621180e365e9f3b95dadc803e540fecc50
2.创建容器连接到网络
--创建2个container连接到 bridge-network
docker run -itd --name --net bridge-network 192.168.1.11:443/myharbor/centos:7.9.2009
[root@es1 nginx]# docker run -itd --name mylinux1 --net bridge-network 192.168.1.11:443/myharbor/centos:7.9.2009
f515d2e034e8be9fe73baa7e166a3d313df830da1b0997c50bb3bd7113334381
3.查看IP
docker inspect mylinux1 |grep IPA
docker inspect mylinux2 |grep IPA
[root@es1 nginx]# docker inspect mylinux1 |grep IPA
"SecondaryIPAddresses": null,
"IPAddress": "",
"IPAMConfig": null,
"IPAddress": "172.20.0.2",
[root@es1 nginx]# docker inspect mylinux2 |grep IPA
"SecondaryIPAddresses": null,
"IPAddress": "",
"IPAMConfig": null,
"IPAddress": "172.20.0.3",
[root@es1 nginx]# docker network ls
NETWORK ID NAME DRIVER SCOPE
f3d67f7b1cca bridge bridge local
a310a3bf09c7 bridge-network bridge local --这个是新加的网络。
e4fab055f716 host host local
e4570a3521b6 my-network bridge local
6c755811646c none null local
缺点:
linux docker IP 可能会变,设置固定容器IP,
docker 默认采用bridge 连接,启动容器的时候会按照顺序来获取ip,
这就导致启动时候ip 不固定的问题
#每次在使用Docker 启动一些业务集群的时候,都需要重新绑定下网卡、固定IP、
同时修改/etc/hosts 文件,非常麻烦
4.删除容器,重新设置固定IP的容器。
--删除之前新建的LINUX容器。
[root@es1 nginx]# docker rm -f 3150bfc75abd f515d2e034e8
3150bfc75abd
f515d2e034e8
--删除网络
[root@es1 nginx]# docker network rm bridge-network
bridge-network
--解决办法:
在每次启动容器的时候指定 IP、hostname、往/etc/hosts 里添加hosts,命令如下:
(1)IP
(2)HOSTNAME
(3)添加HOSTS;
docker run -itd --name mylinux1 --hostname mylinux1 --net bridge-network \
--ip 172.20.0.36 \
--add-host mylinux3:172.20.0.38 \
192.168.1.11:443/myharbor/centos:7.9.2009
[root@es1 nginx]# docker run -itd --name mylinux1 --hostname mylinux1 --net bridge-network \
> --ip 172.20.0.36 \
> --add-host mylinux3:172.20.0.38 \
> 192.168.1.11:443/myharbor/centos:7.9.2009
107db6291eef981ecafd6c5948257decc061eff6f1e389b9a149c77e3c523f31
运行一个容器:mylinux1,IP地址是:172.20.0.36
同时往容器里面添加37、38主机名和IP地址。
--hostname :指定hostname;
--net : 指定网络模式
--ip:指定IP
--add-host :指定往/etc/hosts 添加的host
[root@es1 nginx]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
107db6291eef 192.168.1.11:443/myharbor/centos:7.9.2009 "/bin/bash" About a minute ago Up About a minute mylinux1
c0ad65961224 192.168.1.11:443/myharbor/tomcat:10.0.0-jdk8 "catalina.sh run" 4 hours ago Up 4 hours 0.0.0.0:58080->8080/tcp, :::58080->8080/tcp sspuweb_58080
5e1486a652b7 192.168.1.11:443/myharbor/httpd:latest "httpd-foreground" 5 hours ago Up 5 hours 0.0.0.0:8006->80/tcp, :::8006->80/tcp sspuweb_8006
0cb0c69e5d9a 192.168.1.11:443/myharbor/httpd:latest "httpd-foreground" 5 hours ago Up 5 hours 0.0.0.0:8007->80/tcp, :::8007->80/tcp myweb_8007
4198c3cbb0b3 192.168.1.11:443/myharbor/nginx:latest "/docker-entrypoint.…" 5 hours ago Up 5 hours 0.0.0.0:8010->80/tcp, :::8010->80/tcp sspuweb_8010
4dd714ebc98d 192.168.1.11:443/myharbor/nginx:latest "/docker-entrypoint.…" 5 hours ago Up 5 hours 0.0.0.0:8009->80/tcp, :::8009->80/tcp sspu_8009
2084fabb416f 192.168.1.11:443/myharbor/nginx:latest "/docker-entrypoint.…" 5 hours ago Up 5 hours 0.0.0.0:8008->80/tcp, :::8008->80/tcp sspuweb_8008
--启动完容器后,进入容器查看/etc/hosts
docker exec -it mylinux1 cat /etc/hosts
[root@es1 nginx]# docker exec -it mylinux1 cat /etc/hosts
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.20.0.37 mylinux2
172.20.0.38 mylinux3
172.20.0.36 mylinux1
5.检查容器的IP .
[root@es1 nginx]# docker inspect mylinux1 |grep IPA
"SecondaryIPAddresses": null,
"IPAddress": "",
"IPAMConfig": {
"IPAddress": "172.20.0.36",
6.重启容器,检查IP是否变化。
[root@es1 nginx]# docker stop 107db6291eef
107db6291eef
[root@es1 nginx]# docker start mylinux1
mylinux1
[root@es1 nginx]# docker inspect mylinux1 |grep IPA
"SecondaryIPAddresses": null,
"IPAddress": "",
"IPAMConfig": {
"IPAddress": "172.20.0.36",
--由此可见,绑定IP后,容器的IP地址在容器重启后不会发生变化。