Docker的网络通信

目录

一、理论讲解和基础操作

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

2.查看Docker容器网络。

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

4.Docker的4种网络通信模式。

二、操作

1.bridge模式。

2.用户自定义bridge网络。

3.host模式。

4.container模式。

5.none模式。


一、理论讲解和基础操作

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

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

2.查看Docker容器网络。

(1)基于Centos的镜像创建一个容器,并进入该容器内。

[root@localhost ~]# docker exec -it f8e6cdeade50 /bin/bash          进入Centos8容器
[root@f8e6cdeade50 /]# cd /etc/yum.repos.d/                         切换目录
[root@f8e6cdeade50 yum.repos.d]# rm -rf *                           删除该目录的所有东西
[root@f8e6cdeade50 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@f8e6cdeade50 yum.repos.d]# yum -y install net-tools

(3)在宿主机上打开一个命令行窗口,查看宿主机的docker0网桥的信息。

(4)查看容器网络信息。

[root@f8e6cdeade50 ~]# ifconfig

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

(1)利用以下命令查看Docker的网络通信模式。

[root@localhost ~]# docker network ls

  • 通过输出信息可以看到,Docker有3种网络通信模式:bridge、host、none。在模式情况下是bridge模式。
  • 除这里列出的3种网络通信模式外,Docker还提供了container网络通信模式用于容器间的相互通信。

(2)查看bridge模式的详细信息,ef6f834895a5是bridge模式的ID号。

[root@localhost ~]# docker network inspect ef6f834895a5

  • bridge模式的子网地址是“172.17.0.0/16”。是这个网络的容器,那这个容器就是bridge模式

4.Docker的4种网络通信模式。

  Docker一共提供了4种网络通信模式:bridge、container、host、none。以下表对比了这4种模式的特点。

网络通信模式是否支持多台主机纵向通信机制横向通信机制
bridge绑定宿主机端口通过Linux桥接进行通信
container绑定宿主机端口通过Linux连接进行通信
host通过宿主机网络进行通信通过宿主机网络进行通信
none无法通信只能通过Linux连接进行通信

二、操作

1.bridge模式。

(1)使用bridge模式创建容器,使用busybox的镜像创建容器。

[root@localhost ~]# docker run -it --network=bridge busybox /bin/sh
/ # 
/ # ifconfig                                查看容器的网络信息

2.用户自定义bridge网络。

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

[root@localhost ~]# docker network create -d bridge --ip-range=192.168.1.0/24 \
> --gateway=192.168.1.1 --subnet=192.168.1.0/24 bridge2

其中的参数说明如下:

  • -d:指定网络通信模式,模式是bridge。
  • -ip-range:指定子网IP地址的范围。
  • -gateway:指定网关的IP地址。
  • --subuet:指定子网的IP地址。
  • bridge2:指定bridge网络的名称。

(2)查看Docker的网络,可以看到新创建的bridge2。

[root@localhost ~]# docker network ls

(3)使用 bridge2创建一个容器,这里通过参数--p 指定了容器的IP地址。

[root@localhost ~]# docker run -it --network=bridge2 --ip=192.168.1.3 busybox
/ # ifconfig

3.host模式。

(1)使用host模式来创建容器。

[root@localhost ~]# docker run -it --network=host busybox /bin/sh
/ # 
/ # ifconfig
  • 对比一下容器内的网络信息和宿主机的网络信息,可以发现,容器与宿主机共享了同一个网络命名空间,即容器使用了宿主机的网络配置信息。

4.container模式。

(1)使用busybox的镜像创建一个容器A,并查看容器的网络信息。

[root@localhost ~]# docker run -it busybox /bin/sh
/ # 
/ # ifconfig

(2)开启一个新的命令行窗口,并使用container模式创建一个新的容器 B。

[root@localhost ~]# docker ps -a                    查看容器A的ID
[root@localhost ~]# docker run -it --network=container:9ebd8194d2f8 busybox /bin/sh
/ # 
/ # ifconfig

(3)查看容器B的网络信息。

  • 容器A和容器B使用了相同的网络命名空间这是因为在创建容器B时使用了container模式,使得容器B不再创建自己的网络命名空间,而直接使用容器A的网络命名空间。

5.none模式。

(1)使用none模式来创建一个容器。

[root@localhost ~]# docker run -it --network=none busybox /bin/sh
/ # 
/ # ifconfig

  • 由于none模式不包含任何网络配置,所以在其网络配置信息中就只包含一个127.0.0.1的IP地址。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值