开发者社区> 技术小阿哥> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

虚拟化技术—docker容器—网络模式

简介:
+关注继续查看

Docker作为目前最火的轻量级容器技术,有很多令人称道的功能,如Docker的镜像管理。然而,Docker同样有着很多不完善的地方,网络方面就是Docker比较薄弱的部分。因此,我们有必要深入了解Docker的网络知识,以满足更高的网络需求。这里先介绍Docker自身的4种网络工作方式。


1、 Docker4种网络模式

我们在使用docker run创建Docker容器时,可以用--net选项指定容器的网络模式,Docker有以下4种网络模式:

§ host模式,使用--net=host指定。

§ container模式,使用--net=container:NAME_or_ID指定。

§ none模式,使用--net=none指定。

§ bridge模式,使用--net=bridge指定,默认设置。

下面分别介绍一下Docker的各个网络模式。

1.1host模式

Docker使用了LinuxNamespaces技术来进行资源隔离,如PID Namespace隔离进程,Mount Namespace隔离文件系统,Network Namespace隔离网络等。一个Network Namespace提供了一份独立的网络环境,包括网卡、路由、Iptable规则等都与其他的Network Namespace隔离。一个Docker容器一般会分配一个独立的Network Namespace。但如果启动容器的时候使用host模式,那么这个容器将不会获得一个独立的Network Namespace,而是和宿主机共用一个Network Namespace。容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口。


例如,我们在192.168.137.100/24的机器上用host模式启动一个含有web应用的Docker容器,监听tcp80端口。当我们在容器中执行任何类似ifconfig命令查看网络环境时,看到的都是宿主机上的信息。而外界访问容器中的应用,则直接使用192.168.137.100/24即可,不用任何NAT转换,就如直接跑在宿主机中一样。但是,容器的其他方面,如文件系统、进程列表等还是和宿主机隔离的。


1.2container模式

这个模式指定新创建的容器和已经存在的一个容器共享一个Network Namespace,而不是和宿主机共享。新创建的容器不会创建自己的网卡,配置自己的IP,而是和一个指定的容器共享IP、端口范围等。同样,两个容器除了网络方面,其他的如文件系统、进程列表等还是隔离的。两个容器的进程可以通过lo网卡设备通信。

 

1.3none模式

这个模式和前两个不同。在这种模式下,Docker容器拥有自己的Network Namespace,但是,并不为Docker容器进行任何网络配置。也就是说,这个Docker容器没有网卡、IP、路由等信息。需要我们自己为Docker容器添加网卡、配置IP等。

 

1.4bridge模式

bridge模式是Docker默认的网络设置,此模式会为每一个容器分配Network Namespace、设置IP等,并将一个主机上的Docker容器连接到一个虚拟网桥上。

Docker server启动时,会在主机上创建一个名为docker0的虚拟网桥,此主机上启动的Docker容器会连接到这个虚拟网桥上。虚拟网桥的工作方式和物理交换机类似,这样主机上的所有容器就通过交换机连在了一个二层网络中。接下来就要为容器分配IP了,Docker会从RFC1918所定义的私有IP网段中,选择一个和宿主机不同的IP地址和子网分配给docker0,连接到docker0的容器就从这个子网中选择一个未占用的IP使用。如一般Docker会使用172.17.0.0/16这个网段,并将172.17.42.1/16分配给docker0网桥。下面是拓扑图:


wKioL1gq9arw8RFdAAAfMLoIfY4904.png




本文转自 sykmiao 51CTO博客,原文链接:http://blog.51cto.com/syklinux/1873221,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
关于mac 系统docker 使用桥接网络ip 宿主机无法访问容器的问题
关于mac 系统docker 使用桥接网络ip 宿主机无法访问容器的问题
0 0
容器网络 ALB Ingress|学习笔记
快速学习容器网络 ALB Ingress
0 0
容器网络 Terway|学习笔记
快速学习容器网络 Terway
0 0
【Docker网络】容器之间的网络是如何连通的?
【Docker网络】容器之间的网络是如何连通的?
0 0
《阿里云如何构建高性能云原声容器网络?》电子版地址
阿里云如何构建高性能云原声容器网络?
0 0
【云原生 | 17】容器的四种网络模式
bridge:Docker 默认方式,网桥模式 none:容器没有网络栈(主要用于离线分析等模式,数据可以通过目录挂载的方式传输,方便又安全) container:使用其它容器的网络栈,Docker容器会加入其它容器的 network namespace(相当容器二的网卡直接进入容器一的虚拟空间内,两个容器直接通过本地回环接口通信,非常高校。一般用于只有网络采用这种模式联通,其他进程都是互相隔离的) --network container:(ContainerName) host:表示容器使用 ......
0 0
Docker 容器互联 --link 和 自定义网络
本文是博主学习docker 容器互联的记录,希望对大家有所帮助
0 0
Linkerd 2.10—使用 Debug Sidecar,注入调试容器来捕获网络数据包
Linkerd 2.10—使用 Debug Sidecar,注入调试容器来捕获网络数据包
0 0
Docker容器间网络互联原理,讲不明白算我输
一、今天我们要搞明白的实验 同一个宿主机上的不同容器之间的网络如何互通的??? 二、前置网络知识
0 0
文章
问答
文章排行榜
最热
最新
相关电子书
更多
容器技术在千万用户级企业的实践及网络方案优化
立即下载
阿里云如何构建高性能云原声容器网络?
立即下载
容器技术在千万用户级企业的实践及网络方案优化
立即下载