Docker网络配置

1.从docker说起

1.1 docker默认网络

docker安装后,会自动创建3个网络->docker network ls

docker默认采用的网络:"bridge"桥接网络

docker安装成功后,会出现 docker0 的网络设备,本质是一个虚拟网桥 ->brctl show

注意:brctl show命令需要通过"yum install bridge-utils -y"安装

1.2 docker0的作用

172.17.0.1

给容器分配IP地址(与docker0同网段)-172.17.0.2、172.17.0.3.

给容器分配Mac地址

是每个容器的默认网关

同一个宿主机的各个容器之间通信基础(都接入docker0网桥)

宿主机和容器之间通信的基础

1.3 docker0的地址划分

docker0本身的IP:172.17.0.1

docker0的子网掩码:255.255.0.0

docker0分配的IP范围:172.17.0.2~172.17.255.254,总计65534个

2.docker0如何组织网络

2.1 运行某个容器

docker search alpine # alpine是一个轻量级的Linux基础镜像(ip、ifconig、ping)
docker pull alpine
docker run -itd --name ap01 alpine
ip addr


11: veth 2c06577 @if 10  ---> ap01

13: veth cbf8bdb @if 12 ---> ap02

brctl show


 

2.2 查看容器网络接口

docker exec -it ap01 ip addr

2.3查看容器IP

docker exec -it ap01 hostname -i | docker inspect ap01

2.4 小结

veth全称是Virtual Ethernet(虚拟以太网):
veth通过"veth pair"技术在veth设备一端写入网络包,其对端的veth设备可以读取到对应的网络包;(可想象成使用一根虚拟网线将两个veth设备连接起来)

->容器启动
-> docker创建一对虚拟接口
一端放到本地主机,如 veth***,然后桥接到默认的 docker0 上>
->另外一端放到新容器中,并修改名字为eth0
->docker0分配一个IP给容器的eth0,并配置默认路由到桥接网卡veth75f9

3.网络互连

3.1 容器与宿主机之间的互连

宿主机IP:192.168.13.21
容器ap01:172.17.0.2
容器ap02:172.17.0.3

3.2 容器与容器之间的互连

        - 默认情况下,docker容器之间都是通过IP互相连接的;

        - 通过 docker run 指令的参数"--link 容器名:别名",该参数会修改容器的hosts映射(/etc/hosts):

                docker run -itd --name ap02 --link ap01:ap01 alpine

               

               

        - 基于安全考虑,通过 vim /etc/docker/daemon.json 在末尾添加配置:
                "icc":false(一刀切,不推荐)
        可禁止容器之间的互连(需要重启生效 systemctl restart docker,但此配置不对--link 生效)

                "iptables":true(配合规则使用,推荐)

示例:

启动容器一:docker run --name ng01 -itd nginx

启动容器二:docker run --name ng02 -itd --link ng01:ng01 nginx

ng02可以单向访问ng01,但ng01不可以访问ng02

  
        

3.3 容器访问互联网

4.自定义网络

4.1 为何需要自定义网络

容器的隔离,提高安全性;DNS解析和服务发现;容器之间的负载均衡.….

4.2 如何创建自定义网络

docker network create [OPTIONS] NETWORK

--driver string        Driver to manage the Network (default "bridge")
--subnet strings       Subnet in CIDR format that represents a network segment

。。。

例如:docker network create apnet --subnet=192.168.1.0/24

注意:--driver代表驱动类型,默认"bridge":

        --subnet代表网段设置,默认docker地址上递增(172.17.0.1-->172.18.0.1)

        --可通过 docker network ls 查看自定义网络

          

docker network inspect 网络名    #查看使用网络的详情

4.3 如何使用自定义网络

容器启动时:
docker run --network 自定义网络名

容器启动后:
docker network connect/disconnect 网络名 容器名

4.4 删除自定义网络

docker network rm 网络名    #必须确保网络未被使用过


.

5.总结

涉及到了docker网络基本概念、组网原理、自定义网络以及容器的互连;

未涉及到不同主机之间容器的网络连接。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值