Code Rally
全部话题
您目前处于: InfoQ首页 文章 Docker网络详解及pipework源码解读与实践
Docker网络详解及pipework源码解读与实践
作者 冯明振 发布于 2015年1月14日 |
分享到: 微博 微信 Facebook Twitter 有道云笔记 邮件分享
"稍后阅读"
"我的阅读清单"
Docker作为目前最火的轻量级容器技术,有很多令人称道的功能,如Docker的镜像管理。然而,
Docker同样有着很多不完善的地方,网络方面就是Docker比较薄弱的部分。因此,我们有必要深入
了解Docker的网络知识,以满足更高的网络需求。本文首先介绍了Docker自身的4种网络工作方式,
然后通过3个样例 —— 将Docker容器配置到本地网络环境中、单主机Docker容器的VLAN划分、多主
机Docker容器的VLAN划分,演示了如何使用pipework帮助我们进行复杂的网络设置,以及pipework
是如何工作的。
1. Docker的4种网络模式
我们在使用docker run创建Docker容器时,可以用--net选项指定容器的网络模式,Docker有以下4
种网络模式:
host模式,使用--net=host指定。
container模式,使用--net=container:NAME_or_ID指定。
none模式,使用--net=none指定。
bridge模式,使用--net=bridge指定,默认设置。
下面分别介绍一下Docker的各个网络模式。
相关厂商内容
IBM Bluemix产品功能手册
中小型企业该如何以低成本部署弹性私有云?
内置跨节点分布式数据库,支持大并发处理的IM服务平台
IBM Bluemix产品介绍
快速、灵活的开发体验,无需在意基础设施管理
1.1 host模式
众所周知,Docker使用了Linux的Namespaces技术来进行资源隔离,如PID Namespace隔离进程,
Mount Namespace隔离文件系统,Network Namespace隔离网络等。一个Network Namespace提供了一
份独立的网络环境,包括网卡、路由、Iptable规则等都与其他的Network Namespace隔离。一个
Docker容器一般会分配一个独立的Network Namespace。但如果启动容器的时候使用host模式,那么
这个容器将不会获得一个独立的Network Namespace,而是和宿主机共用一个Network Namespace。
容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口。
例如,我们在10.10.101.105/24的机器上用host模式启动一个含有web应用的Docker容器,监听