[docker学习笔记] 11.docker网络模式及容器间网络通信

docker的容器之间需要进行业务通信

11.1 默认网络

初始安装docker 之后,有三种网络,可以通过 docker -network ls 查看

 [root@localhost ~]# docker network ls
 NETWORK ID     NAME      DRIVER    SCOPE
 691eb043e53a   bridge    bridge    local
 fda698a7f0a7   host      host      local
 958d74aaa8f5   none      null      local
  • bridge 为每一个容器分配、设置IP等,并将容器连接到一个docker0 虚拟网桥,默认为该模式。

  • host 容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口

  • none 容器有独立的Network namespace,但并没有对其进行任何网络设置,如分配veth pair和网络连接,IP等

  • container 新创建的容器不会创建自己的网卡和配置自己的IP,而是和一个指定的容器共享IP、端口范围等

11.1.1 bridge网络模式

在该模式中,Docker守护进程创建了一个虚拟以太网桥 docker0 ,新建的容器会自动桥接到这个接口,附加在其上的任何网卡之间都能自动转发数据包。

创建容器时,--net bridge或--network bridge ,可指定该模式,不写模式也是这个模式。

 

 ip a #可以看到有个docker0
 docker run -it --name bbox01 busybox #跑一个busybox,并进入到容器去
 # -itd 则是不进去
 ip a #可以看到eth0的信息
 exit
 docker start bbox01
 ip a #可以看到比原先多出来veth的接口,可见每次容器创建都会有一对接口,相互连接起来

11.1.2 host网络模式

 docker stop bbox01 #停止bbox01
 docker run -it --name bbox02 --network host daocloud.io/library/busybox:1.26-glibc #在国内另一个网址上下载busybox,用host网络模式创建bbox02
 exit #退出bbox02的容器
 docker start bbox02
 ip addr #查看网卡信息,可以看到共用的是宿主机的

11.1.3 none网络模式

实际操作中很少用。

 docker stop bbox02
 docker run -it --name bbox03 --network none  busybox #none网络模式创建bbox03
 ip addr #查看网卡信息,可以看到没有网卡信息

11.1.4 container网络模式

conainer网络模式是docker中一种较为特别的网络模式。在创建容器时通过参数 --net container:已运行的容器名称|ID 或者 --network container:已运行的容器名称|ID 指定;

处于这个模式下的docker容器会共享一个网络栈,这样两个容器之间可以使用localhost高效快速通信。

 

 

container网络模式创建的容器,会和指定的容器共享一个IP,端口范围等网络方面。除此之外,文件系统、进程列表等其他的还是隔离的

 docker run -it --name bbox04 -network container:bbox1 busybox #创建bbox04,共用bbox01的网络
 ip addr #查看到此时的网络信息,如果另开一个会话进入到bbox01中,可以进行肉眼对比

11.2 自定义网络

因为容器关停后的IP不是固定的,自定义网络后可以ping到容器名,可实现容器间相互通信

docker deamon实现了一个内嵌的DNS server,dns可以自动解析容器名为ip。且docker dns只能用在自定义网络模式中,实际开发中还是以自定义网络居多。

11.2.1 创建网络

docker network create [网络名称]

 docker network --help #查看network相关命令
 docker network create custom_network #创建一个叫custome_network的网络,默认bridge
 docker network ls #肉眼验证
 docker run -it --name bbox06 --network custom_network busybox #用自定义网络创建容器
 #另一个会话中,随便进入另一个容器就能ping到bbox06的容器
 docker run -it --name bbox07 --net custom_network busybox #--network和--net是一样的
 ping bbox07 #肉眼验证

11.2.2 连接网络

docker network connect [网络名称] [容器名称]

11.2.3 断开

docker network disconnect [网络名称] [容器名称]

11.2.4 移除

docker network rm [网络名称]

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值