Docker实践(2)—虚拟网络
1 docker(container)的虚拟网络
docker的虚拟网络结构:

host创建一个虚拟bridge,每个container对应一个虚拟网络设备(TAP设备),与bridge一起构成一个虚拟网络,并通过虚拟bridge相互通信。
Host的物理网络设备eth0作为内部虚拟网络的NAT网关,container通过eth0访问外部网络。
# ifconfig
docker0 Link encap:Ethernet HWaddr 56:84:7A:FE:97:99
inet addr:127.0.0.2 Bcast:0.0.0.0 Mask:255.0.0.0
eth0 Link encap:Ethernet HWaddr 00:50:56:28:39:2C
inet addr:172.16.213.129 Bcast:172.16.213.255 Mask:255.255.255.0
veth4d69 Link encap:Ethernet HWaddr A2:7D:7B:61:CA:2F
inet6 addr: fe80::a07d:7bff:fe61:ca2f/64 Scope:Link
UP BROADCAST RUNNING MTU:1500 Metric:1
# brctl show
bridge name bridge id STP enabled interfaces
docker0 8000.56847afe9799 no veth4d69
(1)host内部container内部互访
通过虚拟网桥完成,比较简单。
(2)container通过NAT访问外部网络
-t nat -A POSTROUTING -s 127.0.0.0/8 ! -d 127.0.0.0/8 -j MASQUERADE
上面127.0.0.0/8是内部container的网络,如果目标地址非内部虚拟网络,则进行NAT转换。
(3)外部网络访问container
通常来说,与虚拟机一样,我们的容器是用来服务的,这就需要让外部网络能够访问container,这通过DNAT来实现。
-t nat -A DOCKER ! -i docker0 -p tcp -m tcp --dport 49153 -j DNAT --to-destination 127.0.0.3:22
127.0.0.3:22是内部container的ip和sshd端口,在host上映身为49153端口。
# docker port test_sshd 22
0.0.0.0:49153
2与虚拟机的比较
实际上,docker的网络结构就是VMWare/KVM的NAT模式。在实际运营中,虚拟机一般会与host在同一个网络,所以采用下面这种桥接模型,而对于docker,由于container内网是不暴露给外部的,所以采用NAT方式。
KVM Bridge示意图:

# brctl show
bridge name bridge id STP enabled interfaces
br0 8000.0019d1891e2f no eth0
vnet0
作者:YY哥
出处:http://www.cnblogs.com/hustcat/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
Docker实践(2)—虚拟网络的更多相关文章
- Linux虚拟网络:Docker网络知识之基础篇
我们在工作中应用了docker容器化技术,服务的部署.维护和扩展都方便了很多.然而,近期在私有化部署过程中,由于不同服务器环境的复杂多变,常常遇到网络方面的问题,现象为容器服务运行正常,但宿主机.容器 ...
- 动手实践虚拟网络 - 每天5分钟玩转 OpenStack(10)
本节将演示如何在实验环境中实现下图所示的虚拟网络 配置 Linux Bridge br0 编辑 /etc/network/interfaces,配置 br0. 下面用 vimdiff 展示了对 /et ...
- O010、动手实践虚拟网络
参考https://www.cnblogs.com/CloudMan6/p/5296573.html 本节将演示如何在实验环境中实现下图所示的虚拟网络
- Docker实践,来自沪江、滴滴、蘑菇街架构师的交流分享
架构师小组交流会:每期选一个时下最热门的技术话题进行实践经验分享. 第一期主题:容器实践.Docker 作为当前最具颠覆性的开源技术之一,其轻量虚拟化.可移植性是CI/CD,DevOps,微服务的重要 ...
- [原] 利用 OVS 建立 VxLAN 虚拟网络实验
OVS 配置 VxLAN HOST A ------------------------------------------ | zh-veth0(10.1.1.1) VM A | | ---|--- ...
- Docker的4种网络模式
我们在使用docker run创建Docker容器时,可以用--net选项指定容器的网络模式,Docker有以下4种网络模式: · host模式,使用--net=host指定. · container ...
- docker学习3-虚拟网络模式
一.虚拟机网络模式 在理解docker网络隔离前,先看下之前虚拟机里对网络的处理,VirtualBox中有4中网络连接方式: NAT Bridged Adapter Internal Host-onl ...
- [docker]docker的四种网络方式
声明: 本博客欢迎转发,但请保留原作者信息! 博客地址:http://blog.csdn.net/halcyonbaby 内容系本人学习.研究和总结,如有雷同,实属荣幸! bridge方式(默认) H ...
- VMware虚拟网络连接模式详解(NAT,Bridged,Host-only)
序言 如果你使用VMware安装虚拟机,那么你必定会选择网络连接,那么vmware提供主要的3种网络连接方式,我们该如何抉择呢?他们有什么不同呢?这篇我们就做一个深入. 首先打开虚拟机设置里面的网络适 ...
随机推荐
- ReferenceQueue的使用
转:http://www.iflym.com/index.php/java-programe/201407140001.html 1 何为ReferenceQueue 在java的引用体系中,存在着强 ...
- dropbear
生成ssh连接所需要的公钥,如下: /usr/bin/dropbearkey -t dss -f /etc/dropbear/dropbear_dss_host_key (dss加密,长度默认 ...
- Ubuntu10.0.4安装NDK
android版本遇到.so文件crash,需要使用ndk来定位报错代码. 从这里下载ndk安装文件: http://www.androiddevtools.cn/ 运行 ./android-ndk- ...
- LeetCode(76) Minimum Window Substring
题目 Given a string S and a string T, find the minimum window in S which will contain all the characte ...
- STL学习之路
本文面向的读者:学习过C++程序设计语言(也就是说学习过Template),但是还没有接触过STL的STL的初学者.这实际上是我学习STL的一篇笔记,老鸟就不用看了. 什么是泛型程序设计 我们可以简单 ...
- Remove Linked List Elements
Remove all elements from a linked list of integers that have value val. ExampleGiven: 1 --> 2 --& ...
- AngularJS-Controller的使用-读书笔记
最近在读<Angular JS权威教程>读到第9页,按着示例做,居然报错,说MyController undefined,初学者不懂啊,找了个官方的文档,按着改了一下,貌似成功了,有需要的 ...
- Setup network on centos 7
How to Setup network on centos 7 After installing Centos 7, You may not able to connect network ...
- Xamarin.Android之下拉刷新
一.前言 当今任何一个App中只要存在列表,基本上都会使用下拉刷新,而身为Xamarin一族的我们自然也不会落后,下面笔者将带领大家在Xamarin下实现Android中的下拉刷新的效果. 二.准备工 ...
- 在Win7 环境使用Java API 上传文件到 Hadoop2.x HDFS 问题统计
问题一: org.apache.hadoop.security.AccessControlException: org.apache.hadoop.security .AccessControlExc ...