Docker操作之网络通信

目录

一 Docker容器网络通信的基本原理

查看Docker的网络信息 

使用命令查看Docker的网络配置信息 

Docker的四种网络通信模式 

使用Bridge模式创建容器 

用户自定义Bridge模式 


Docker的容器运行在宿主的虚拟机上,这些虚拟机彼此独立,彼此之间没有任何接口, 即容器之间是逻辑隔离的。

那么,如何实现容器的相互通信呢?容器又如何访问这些外部的网络呢?外部的网络如何才能访问部署在容器内的应用呢?下面跟着我来一起操作吧。

一 Docker容器网络通信的基本原理

Docker容器中的网络接口默认都是虚拟接口。虚拟接口最大的优势是转发效率极高。这是因为Linux通过在内核中进行数据复制来实现虚拟接口之间的数据转发,即发送接口缓存中的数据包会直接复制到接口的缓存中,而无须通过外部的物理网络设备进行交换。

Docker的网络很好的利用了Linux的虚拟网络技术,在宿主机的物理网卡和容器内分别创建一个虚拟接口(veth),并让它们通过宿主机的docker网桥进行连接,如下图所示,我们把一样的一对叫做veth pair。

查看Docker的网络信息 

想要查看Docker的网络信息的话,就先需要在容器内安装“net-tools”工具,命令如下:

[root@node1 ~]# docker run -it centos /bin/bash
[root@2ac26f2b33c9 /]# yum -y install net-tools
Failed to set locale, defaulting to C.UTF-8
CentOS Linux 8 - AppStream                                                        57  B/s |  38  B     00:00    
Error: Failed to download metadata for repo 'appstream': Cannot prepare internal mirrorlist: No URLs in mirrorlist

安装完成后,即可查看Docker的网络信息,命令跟查看Linux的网络信息是一样的,命令如下(查看网络信息可在root目录也可在容器内部)

[root@node1 ~]# ifconfig
docker0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 172.17.0.1  netmask 255.255.0.0  broadcast 172.17.255.255
        inet6 fe80::42:fff:fede:eed4  prefixlen 64  scopeid 0x20<link>
        ether 02:42:0f:de:ee:d4  txqueuelen 0  (Ethernet)
        RX packets 10  bytes 666 (666.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 13  bytes 1511 (1.4 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
使用命令查看Docker的网络配置信息 

Docker network 命令用于查看Docker的网路配置信息,下图展示了该命令的帮助信息

通过下面的例子说明这些命令的使用方式:

1. 利用以下命令来查看Docker的网络通信模式。如下图所示

[root@node1 ~]# docker network ls

 

通过上面的信息可以看到,Docker的网络通信有三种模式:Bridge、host和none。在默认的情况下,Docker都是使用Bridge模式;除了上图列出的三种模式外,Docker还提供了container网络通信用于容器之间的相互通信 

查看Bridge模式的详细信息,如下图所示

[root@node1 ~]# docker  network inspect 0d1340868cc7

其中,参数:‘0d1340868cc7’指的是Bridge网络模式的ID

Docker的四种网络通信模式 

          由于Docker 容器彼此之间是逻辑隔离的,所以,在安装 Docker 时会在容器中创建隔离的网络环境。在该隔离的网络模式环境中,运行在宿主机上的各个容器具有完全独立的网络栈,
          并自Docker 容器的网络环境与宿主机相互隔离。通过使用 Docker 的不同网络模
式,可以使 Docke容器共享宿主机的网络命名空间,也可以实现Docker容器间的相互访问。            Docker一共提供了4种网络通信模式:bridge、container、host和none。表4-1对比了
这4种模式的特点

使用Bridge模式创建容器 

(1) 使用busybox的镜像创建容器 (注:参数--network=bridge可以不写,因为Docker默认使用的网络通信模式就是bridge)

[root@node1 ~]# docker run -it --network=bridge busybox /bin/sh
/ # 
/ # 

 (2)在busybox容器内执行“ifcofig”命令查看容器的网络信息,如下图所示

用户自定义Bridge模式 

 默认情况下,Docker引擎会自动创建一个Bridge网络。Docker引擎也为用户提供了自定义Bridge网络的方式。利用该方式。用户可以自定义Bridge网络的子网地址和网关等参数

(1)执行以下命令自定义Bridge网络

 [root@node1 ~]# docker network create ‐d bridge ‐‐ip‐range=192.168.103.
0/24 \
> ‐‐gateway=192.168.103.2 ‐‐subnet=192.168.103.0/24 bridge2

其中的参数解释如下:

1. -d:指定网络通信模式,默认是bridge。

2. -ip-range;指定子网IP地址的范围
3. -gateway:指定网关的IP地址。
4. --subnet:指定子网的IP地址。
5. bridge2:指定bridge 网络的名称。

输入以下命令可以查看新创建的Bridge2

[root@node1 ~]# docker network ls

今天只写了Bridge这一个网络通信的模式的简介,后续我会把剩下的三种给写出来 

  • 16
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值