应用容器引擎之 docker 学习 (十二) docker网络 (基本概念+原生网络+容器间的通信+自定义网络)

docker网络简介

当你开始大规模使用Docker时,你会发现需要了解很多关于网络的知识
Docker作为目前最火的轻量级容器技术,有很多令人称道的功能,如Docker的镜像管理然而,Docker同样有着很多不完善的地方,网络方面就是Docker比较薄弱的部分。
因此,我们有必要深入了解Docker的网络知识,以满足更高的网络需求

安装Docker时,会自动创建三个网络,bridge(创建容器默认连接到此网络)、 none 、host。这三个是docker的原生网络。

在这里插入图片描述

docker原生网络

默认桥接模式

概念理解

相当于Vmware中的Nat模式,容器使用独立network Namespace,并连接到docker0虚拟网卡(默认模式)
通过docker0网桥以及Iptables nat表配置与宿主机通信;
bridge模式是Docker默认的网络设置
此模式会为每一个容器分配Network Namespace、设置IP等,并将一个主机上的Docker容器连接到一个虚拟网桥上

详细解释:
在这里插入图片描述
在这里插入图片描述bridge模式下容器的通信
在这里插入图片描述
在这里插入图片描述
那么,外面的机器是如何访问Docker容器的服务呢?
我们首先用下面命令创建一个含有web应用的容器,将容器的80端口映射到主机的80端口。

docker run --name=nginx_bridge --net=bridge -p 80:80 -d nginx

然后查看Iptable规则的变化,发现多了这样一条规则:

-A DOCKER ! -i docker0 -p tcp -m tcp --dport 80 -j DNAT --to-destination 172.17.0.2:80

此条规则就是对主机eth0收到的目的端口为80的tcp流量进行DNAT转换,将流量发往172.17.0.2:80,也就是我们上面创建的Docker容器。

所以,外界只需访问10.10.101.105:80就可以访问到容器中的服务。

除此之外,我们还可以自定义Docker使用的IP地址、DNS等信息,甚至使用自己定义的网桥,但是其工作方式还是一样的。

实验过程

1.当你安装Docker时,它会自动创建三个网络。你可以使用以下docker network ls命令列出这些网络。

在这里插入图片描述

2.当不指定网络类型时,docker默认使用桥接模式的网络。

在这里插入图片描述
在这里插入图片描述

可以看到此时桥接网络已经创建
在这里插入图片描述在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

有几个容器,会出现几个网络接口
在这里插入图片描述
新运行一个容器busybox

在这里插入图片描述

在这里插入图片描述在这里插入图片描述在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
在这里插入图片描述

host模式

概念理解

相当于Vmware中的桥接模式,与宿主机在同一个网络中,但没有独立IP地址

众所周知,Docker使用了Linux的Namespaces技术来进行资源隔离,如PID Namespace隔离进程 Mount Namespace隔离文件系统,Network Namespace隔离网络等。

一个Network Namespace提供了一份独立的网络环境,包括网卡、路由、Iptable规则等都与其他的Network Namespace隔离

一个Docker容器一般会分配一个独立的Network Namespace
但如果启动容器的时候使用host模式,那么这个容器将不会获得一个独立的Network Namespace。

而是和宿主机共用一个Network Namespace。容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口

在这里插入图片描述

实验操作

1.在这里插入图片描述

2.在这里插入图片描述3.在这里插入图片描述4.在这里插入图片描述在这里插入图片描述5.可以看出容器的ip和宿主机的ip一样
在这里插入图片描述在这里插入图片描述6.在这里插入图片描述在这里插入图片描述7.在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

none模式

该模式将容器放置在它自己的网络栈中,但是并不进行任何配置
实际上,该模式关闭了容器的网络功能,在以下两种情况下是有用的:容器并不需要网络(例如只需要写磁盘卷的批处理任务)。

在这里插入图片描述在这里插入图片描述3.在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

自定义网络

在这里插入图片描述

自定义bridge模式

一个bridge网络是Docker中最常用的网络类型。
桥接网络类似于默认bridge网络,但添加一些新功能并删除一些旧的能力。自定义的网桥来控制哪些容器可以相互通信,还可以自动DNS解析容器名称到IP地址

在这里插入图片描述
1.使用默认的bridge网络时
在这里插入图片描述在这里插入图片描述2.在这里插入图片描述在这里插入图片描述3.运行容器时指定自定义的桥接,发现可以ping通主机名称
在这里插入图片描述4.在这里插入图片描述

在这里插入图片描述在这里插入图片描述在这里插入图片描述6.在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述7.在这里插入图片描述先删除容器
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述8.
在这里插入图片描述在这里插入图片描述在这里插入图片描述9.
在这里插入图片描述在这里插入图片描述创建网络时。指定子网
在这里插入图片描述在这里插入图片描述在这里插入图片描述10.在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

连接到不同网桥的容器间进行通信

在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述1.在这里插入图片描述2.在这里插入图片描述在这里插入图片描述3.在这里插入图片描述4.在这里插入图片描述5.在这里插入图片描述6.方法一:connect模式
在这里插入图片描述7.在这里插入图片描述8.在这里插入图片描述9. 方法二:joined模式
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述10.joined模式下运行在同一个网络的容器,可以通过localhost来通信
在这里插入图片描述在这里插入图片描述在这里插入图片描述11.在这里插入图片描述在这里插入图片描述
12.测试–link
在这里插入图片描述13.在这里插入图片描述14.在这里插入图片描述15.在这里插入图片描述在这里插入图片描述
15.在这里插入图片描述在这里插入图片描述在这里插入图片描述16.在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述此时vm1已经变为0.4
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值