【docker】docker自定义网络

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地址在容器重启后不会发生变化。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值