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)—虚拟网络的更多相关文章

  1. Linux虚拟网络:Docker网络知识之基础篇

    我们在工作中应用了docker容器化技术,服务的部署.维护和扩展都方便了很多.然而,近期在私有化部署过程中,由于不同服务器环境的复杂多变,常常遇到网络方面的问题,现象为容器服务运行正常,但宿主机.容器 ...

  2. 动手实践虚拟网络 - 每天5分钟玩转 OpenStack(10)

    本节将演示如何在实验环境中实现下图所示的虚拟网络 配置 Linux Bridge br0 编辑 /etc/network/interfaces,配置 br0. 下面用 vimdiff 展示了对 /et ...

  3. O010、动手实践虚拟网络

    参考https://www.cnblogs.com/CloudMan6/p/5296573.html   本节将演示如何在实验环境中实现下图所示的虚拟网络  

  4. Docker实践,来自沪江、滴滴、蘑菇街架构师的交流分享

    架构师小组交流会:每期选一个时下最热门的技术话题进行实践经验分享. 第一期主题:容器实践.Docker 作为当前最具颠覆性的开源技术之一,其轻量虚拟化.可移植性是CI/CD,DevOps,微服务的重要 ...

  5. [原] 利用 OVS 建立 VxLAN 虚拟网络实验

    OVS 配置 VxLAN HOST A ------------------------------------------ | zh-veth0(10.1.1.1) VM A | | ---|--- ...

  6. Docker的4种网络模式

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

  7. docker学习3-虚拟网络模式

    一.虚拟机网络模式 在理解docker网络隔离前,先看下之前虚拟机里对网络的处理,VirtualBox中有4中网络连接方式: NAT Bridged Adapter Internal Host-onl ...

  8. [docker]docker的四种网络方式

    声明: 本博客欢迎转发,但请保留原作者信息! 博客地址:http://blog.csdn.net/halcyonbaby 内容系本人学习.研究和总结,如有雷同,实属荣幸! bridge方式(默认) H ...

  9. VMware虚拟网络连接模式详解(NAT,Bridged,Host-only)

    序言 如果你使用VMware安装虚拟机,那么你必定会选择网络连接,那么vmware提供主要的3种网络连接方式,我们该如何抉择呢?他们有什么不同呢?这篇我们就做一个深入. 首先打开虚拟机设置里面的网络适 ...

随机推荐

  1. ReferenceQueue的使用

    转:http://www.iflym.com/index.php/java-programe/201407140001.html 1 何为ReferenceQueue 在java的引用体系中,存在着强 ...

  2. dropbear

    生成ssh连接所需要的公钥,如下: /usr/bin/dropbearkey -t dss -f /etc/dropbear/dropbear_dss_host_key     (dss加密,长度默认 ...

  3. Ubuntu10.0.4安装NDK

    android版本遇到.so文件crash,需要使用ndk来定位报错代码. 从这里下载ndk安装文件: http://www.androiddevtools.cn/ 运行 ./android-ndk- ...

  4. 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 ...

  5. STL学习之路

    本文面向的读者:学习过C++程序设计语言(也就是说学习过Template),但是还没有接触过STL的STL的初学者.这实际上是我学习STL的一篇笔记,老鸟就不用看了. 什么是泛型程序设计 我们可以简单 ...

  6. Remove Linked List Elements

    Remove all elements from a linked list of integers that have value val. ExampleGiven: 1 --> 2 --& ...

  7. AngularJS-Controller的使用-读书笔记

    最近在读<Angular JS权威教程>读到第9页,按着示例做,居然报错,说MyController undefined,初学者不懂啊,找了个官方的文档,按着改了一下,貌似成功了,有需要的 ...

  8. Setup network on centos 7

    How to Setup network on centos 7     After installing Centos 7, You may not able to connect network ...

  9. Xamarin.Android之下拉刷新

    一.前言 当今任何一个App中只要存在列表,基本上都会使用下拉刷新,而身为Xamarin一族的我们自然也不会落后,下面笔者将带领大家在Xamarin下实现Android中的下拉刷新的效果. 二.准备工 ...

  10. 在Win7 环境使用Java API 上传文件到 Hadoop2.x HDFS 问题统计

    问题一: org.apache.hadoop.security.AccessControlException: org.apache.hadoop.security .AccessControlExc ...