看我的文章准没错,关于Docker网络通信

      Docker的容器运行在宿主机的虚拟机上。这些虚拟机彼此独立,彼此之间没有任何接 口,即容器彼此之间是逻辑隔离的。
       那么,如何实现容器的相互通信呢?容器又如何访问外部的网络呢?外部的网络如何才能 访问部署在容器内的应用呢?本章将带领读者详细了解这些问题。
4.1 Docker容器网络通信的基本原理
            Docker容器中的网络接口默认都是虚拟接口。虚拟接口的最大优势是转发效率极高。
这是因为Linux 通过在内核中进行数据复制来实现虚拟接口之间的数据转发,即发送接口缓
存中的数据包会被直接复制到接收接口的缓存中,而无须通过外部的物理网络设备进行交
换。
注释:虚拟接口和一个正常的以太网并无太大区别,只是它的速度比以太网卡快得多。
Docker 的网络很好地利用了 Linux 虚拟网络技术,在宿主机的物理网卡和容器内分别
创建-个虚拟接口(veth),并让它们通过宿主机的 docker 网桥进行连接,如图4-1 所示。我
们把样的一对veth叫作veth pair。
[root@mm ~]# curl -O https://mirrors.aliyun.com/repo/Centos-8.repo
[root@mm ~]# yum clean all
[root@mm ~]# yum makecache

(1)基于Centos的镜像创建一个容器,并进入该容器内。
[root@mm ~]# docker run -it centos /bin/bash
[root@44f918b62b96 /]# cd /etc/yum.repos.d/
[root@44f918b62b96 yum.repos.d]# rm -rf *
[root@44f918b62b96 yum.repos.d]# curl -o /etc/yum.repos.d/CentOS-Linux-Baseali.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
(2)为了查看容器的网络信息,在容器内安装“net-tools”网络工具。
[root@44f918b62b96 yum.repos.d]# yum -y install net-tool
(3)在宿主机上打开一个命令行窗口,执行以下命令查看宿主机的 docker0网桥 的信息
o
(4)在容器内执行以下命令查看容器网络信息

2 宿主机与Docker容器建立网络通信的过程
Docker默认采用的是bridge 网络通信模式。图4-4 说明了在创建Docker 容器时建立
网络通信的过程。

下面用文字描述了这过程。
(1)客户端执行“docker run”命令创建并启动容器。
(2)Docker引擎创建一对虚拟接口 veth pair; 并把它们分别放到宿主机和新容器的网
络命空间中。
(3)Docker 引擎将宿主机上的 veth 接口连接到宿主机的 docker0 网桥上,并且给 它分配-“veth”开头的名字,如 vetha66e425。
(4)Docker引擎将容器上的veth 接口改名为“eth0”,并且该接口只有在容器内网
络命名空间中是可见的
(5)Docker引擎从宿主机的 docker0 网桥上分配一个空闲的IP地址给容器内的eth0
例如172.17.0.2。并将容器内eth0的路由网关设置为docker0的内部P地址,例
如:172.17.0.1。
完成以上的这些步骤后,容器就可以使用其内部的虚拟接口“eth0”来连接到其他的容
器和计问外部的网络了。
4.2使用命令查看 Docker的网络配置信息
docker network”命令用于查看Docker的网络配置信息。

下面通过例子来说明这些命令的使用方式。
(1)利用以下命令查看Docker的网络通信模式

(2)查看bridge模式的详细信息
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值