(五)容器网络 -上

一 Linux路由机制打通网络

docker128上修改Docker0的网络地址,与docker130不冲突

[[email protected] ~]# cat /etc/docker/daemon.json
{"bip":"172.18.0.1/16"}[[email protected] ~]# systemctl restart docker

[[email protected] ~]# ip addr|grep docker0
5: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN
inet 172.18.0.1/16 scope global docker0

docker130 上执行 route add -net 172.18.0.0/16 gw 192.168.18.128

docker128 上执行 route add -net 172.17.0.0/16 gw 192.168.18.130

[[email protected] ~]# ip route
default via 10.0.0.2 dev eth0  proto static  metric 100
10.0.0.0/8 dev eth0  proto kernel  scope link  src 10.0.0.128  metric 100
172.17.0.0/16 via 10.0.0.130 dev eth0
172.18.0.0/16 dev docker0  proto kernel  scope link  src 172.18.0.1
192.168.122.0/24 dev virbr0  proto kernel  scope link  src 192.168.122.1 

在130主机上运行一个容器

[[email protected] ~]# docker run -it --name=mycentos centos [[email protected] /]# yum install net-tools -y

[[email protected] /]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.17.0.2 netmask 255.255.0.0 broadcast 0.0.0.0
inet6 fe80::42:acff:fe11:2 prefixlen 64 scopeid 0x20<link>
ether 02:42:ac:11:00:02 txqueuelen 0 (Ethernet)
RX packets 1747 bytes 9192520 (8.7 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 1112 bytes 63744 (62.2 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

[[email protected] ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3b04d1d28796 centos "/bin/bash" 8 minutes ago Exited (0) 2 minutes ago mycentos
[[email protected] ~]# docker start 3b04d1d28796
3b04d1d28796
[[email protected] ~]# ping 172.17.0.2
PING 172.17.0.2 (172.17.0.2) 56(84) bytes of data.
64 bytes from 172.17.0.2: icmp_seq=1 ttl=64 time=0.121 ms
64 bytes from 172.17.0.2: icmp_seq=2 ttl=64 time=0.050 ms
64 bytes from 172.17.0.2: icmp_seq=3 ttl=64 time=0.042 ms
^C
--- 172.17.0.2 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2000ms
rtt min/avg/max/mdev = 0.042/0.071/0.121/0.035 ms

在130上ping128的一个容器

[[email protected] ~]# docker exec -it 381e488278b6 /bin/bash
[[email protected] /]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.18.0.2  netmask 255.255.0.0  broadcast 0.0.0.0
        inet6 fe80::42:acff:fe12:2  prefixlen 64  scopeid 0x20<link>
        ether 02:42:ac:12:00:02  txqueuelen 0  (Ethernet)
        RX packets 13  bytes 1026 (1.0 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 13  bytes 1026 (1.0 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

[[email protected] ~]# ping 172.18.0.2
PING 172.18.0.2 (172.18.0.2) 56(84) bytes of data.
64 bytes from 172.18.0.2: icmp_seq=1 ttl=63 time=0.287 ms
64 bytes from 172.18.0.2: icmp_seq=2 ttl=63 time=0.203 ms
64 bytes from 172.18.0.2: icmp_seq=3 ttl=63 time=0.189 ms
64 bytes from 172.18.0.2: icmp_seq=4 ttl=63 time=0.195 ms
^C
--- 172.18.0.2 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3000ms
rtt min/avg/max/mdev = 0.189/0.218/0.287/0.042 ms

 

在128主机上 抓包

[[email protected] ~]# yum install -y wireshark

#在130的容器中ping 128 容器的ip

[[email protected] /]# ping 172.18.0.2
PING 172.18.0.2 (172.18.0.2) 56(84) bytes of data.
64 bytes from 172.18.0.2: icmp_seq=1 ttl=62 time=0.575 ms
64 bytes from 172.18.0.2: icmp_seq=2 ttl=62 time=0.239 ms
64 bytes from 172.18.0.2: icmp_seq=3 ttl=62 time=0.233 ms
64 bytes from 172.18.0.2: icmp_seq=4 ttl=62 time=0.233 ms
64 bytes from 172.18.0.2: icmp_seq=5 ttl=62 time=0.342 ms
64 bytes from 172.18.0.2: icmp_seq=6 ttl=62 time=0.237 ms
64 bytes from 172.18.0.2: icmp_seq=7 ttl=62 time=0.214 ms
64 bytes from 172.18.0.2: icmp_seq=8 ttl=62 time=0.231 ms
64 bytes from 172.18.0.2: icmp_seq=9 ttl=62 time=0.244 ms

[[email protected] ~]# tshark -f icmp
Running as user "root" and group "root". This could be dangerous.
Capturing on ‘eth0‘
  1 0.000000000   10.0.0.130 -> 172.18.0.2   ICMP 98 Echo (ping) request  id=0x1753, seq=1/256, ttl=64
  2 0.000103946   172.18.0.2 -> 10.0.0.130   ICMP 98 Echo (ping) reply    id=0x1753, seq=1/256, ttl=63 (request in 1)
  3 1.000691927   10.0.0.130 -> 172.18.0.2   ICMP 98 Echo (ping) request  id=0x1753, seq=2/512, ttl=64
  4 1.000746593   172.18.0.2 -> 10.0.0.130   ICMP 98 Echo (ping) reply    id=0x1753, seq=2/512, ttl=63 (request in 3)
  5 2.000378026   10.0.0.130 -> 172.18.0.2   ICMP 98 Echo (ping) request  id=0x1753, seq=3/768, ttl=64
[[email protected] ~]# tshark -i docker0 -f icmp
Running as user "root" and group "root". This could be dangerous.
Capturing on ‘docker0‘
  1 0.000000000   10.0.0.130 -> 172.18.0.2   ICMP 98 Echo (ping) request  id=0x0019, seq=9/2304, ttl=62
  2 0.000026941   172.18.0.2 -> 10.0.0.130   ICMP 98 Echo (ping) reply    id=0x0019, seq=9/2304, ttl=64 (request in 1)
  3 1.000678788   10.0.0.130 -> 172.18.0.2   ICMP 98 Echo (ping) request  id=0x0019, seq=10/2560, ttl=62
  4 1.000711113   172.18.0.2 -> 10.0.0.130   ICMP 98 Echo (ping) reply    id=0x0019, seq=10/2560, ttl=64 (request in 3)
  5 2.001349102   10.0.0.130 -> 172.18.0.2   ICMP 98 Echo (ping) request  id=0x0019, seq=11/2816, ttl=62
  6 2.001382828   172.18.0.2 -> 10.0.0.130   ICMP 98 Echo (ping) reply    id=0x0019, seq=11/2816, ttl=64 (request in 5)
  7 3.001029334   10.0.0.130 -> 172.18.0.2   ICMP 98 Echo (ping) request  id=0x0019, seq=12/3072, ttl=62
  8 3.001063332   172.18.0.2 -> 10.0.0.130   ICMP 98 Echo (ping) reply    id=0x0019, seq=12/3072, ttl=64 (request in 7)
  9 4.001703754   10.0.0.130 -> 172.18.0.2   ICMP 98 Echo (ping) request  id=0x0019, seq=13/3328, ttl=62
 10 4.001731139   172.18.0.2 -> 10.0.0.130   ICMP 98 Echo (ping) reply    id=0x0019, seq=13/3328, ttl=64 (request in 9)
 11 5.002387065   10.0.0.130 -> 172.18.0.2   ICMP 98 Echo (ping) request  id=0x0019, seq

Docker130上的容器 c1:172.17.0.2ping 128上的容器c2:172.18.0.2时,c1发现这个地址不是自己子网的,于是发 给docker0网关

经过路由计算,这个报文被发往下一跳的路由器端口:eth0,所以ttl减一

报文到达128主机的eth0网卡,经过路由计算,被发往下一跳的端口dock0:

回来的时候,数据包流程:c2?--》28 docker0 --》128 eth0 --》130 eth0 --》130 docker0 ---》c1

原文地址:https://www.cnblogs.com/benjamin77/p/9095076.html

时间: 2024-10-04 16:10:25

(五)容器网络 -上的相关文章

4 个你需要了解的容器网络工具

摘要: 有如此之多的各种新的云计算技术.工具和技术需要我们跟进,到底从哪里开始学习是一个艰难的决定.这一系列下一代云计算技术的文章旨在让你快速了解新兴和快速变化领域的重大项目和产品,比如软件定义网络(SDN).容器,以及其交叉领域:容器网络. 有如此之多的各种新的云计算技术.工具和技术需要我们跟进,到底从哪里开始学习是一个艰难的决定.这一系列下一代云计算技术的文章旨在让你快速了解新兴和快速变化领域的重大项目和产品,比如软件定义网络(SDN).容器,以及其交叉领域:容器网络. 对于企业容器部署,容

数据中心如何实现传统网络与容器网络的架构共存

一.概述随着数据中心网络技术的革新,并伴随容器的落地,如何在数据中心内部构建一个合理可用的网络架构,以满足不同形态的业务部署模式,成为一个网络人员越来越需要注重和考虑的方向. 二.业务背景在互联网公司的数据中心,通常你会越来越多的看到容器(k8s)作为业务/服务的载体,各业务/服务之间(pod间)彼此调用,以下从pod间调用.容器网络选型.容器网络架构.网络隔离几个方面进行阐述. 三.pod间调用 同一node内pod间调用pod间通过容器网络纯内部交互,这时外部网络无感知. 不通node的po

使用异步任务加载网络上json数据并加载到ListView中

Android中使用网络访问来加载网上的内容,并将其解析出来加载到控件中,是一种很常见的操作.但是Android的UI线程(也就是主线程)中是不允许进行耗时操作的,因为耗时操作会阻塞主线程,影响用户体验.而访问网络同样是一个耗时操作,并且Android3.0以后是不允许在主线程中访问网络的,所以我们这里用Android封装好的AsyncTask类来完成这些耗时操作. 项目的目录结构如下: AsyncTask是一个抽象类,实际上他是封装好的一个类,底层也是用handler和thread来实现的,我

20145331实验五 Java网络编程及安全

实验五 Java网络编程及安全 实验内容 1.掌握Socket程序的编写: 2.掌握密码技术的使用: 3.设计安全传输系统 4.结队伙伴:20145333赵嘉鑫 博客地址:http://home.cnblogs.com/u/5301z/ 5.分工:自己负责服务端,伙伴负责客户端 实验要求 1.基于Java Socket实现安全传输 2.基于TCP实现客户端和服务器,结对编程一人负责客户端,一人负责服务器 3.使用Git进行版本控制 4.选择对称算法进行数据加解密. 5.选择非对称算法对对称加密密

20145301实验五 Java网络编程及安全

北京电子科技学院(BESTI)实验报告 课程:Java程序设计 班级:1453 指导教师:娄嘉鹏 实验日期:2016.05.06 18:30-21:30 实验名称:实验五 Java网络编程 实验内容 1.用书上的TCP代码,实现服务器与客户端. 2.客户端与服务器连接 3.客户端中输入明文,利用DES算法加密,DES的秘钥用RSA公钥密码中服务器的公钥加密,计算明文的Hash函数值,一起传送给客户端 4.客户端用RSA公钥密码中服务器的私钥解密DES的,秘钥,用秘钥对密文进行解密,得出明文.计算

实验五Java网络编程及安全——20135337朱荟潼

实验五 Java网络编程及安全 结对伙伴:20135317韩玉琪(负责服务器方)http://www.cnblogs.com/hyq20135317/p/4567241.html 实验内容 1.掌握Socket程序的编写: 2.掌握密码技术的使用: 3.设计安全 实验步骤 1.信息安全传送: 发送方A——————>接收方B A加密时,用B的公钥 B解密时,用B的私钥 发送方A对信息(明文)采用DES密钥加密,使用RSA加密前面的DES密钥信息,最终将混合信息进行传递.同时用hash函数将明文进行

网络上可供测试的Web Service

腾讯QQ在线状态 WEB 服务Endpoint: http://www.webxml.com.cn/webservices/qqOnlineWebService.asmx Disco: http://www.webxml.com.cn/webservices/qqOnlineWebService.asmx?discoWSDL: http://www.webxml.com.cn/webservices/qqOnlineWebService.asmx?wsdl通过输入QQ号码(String)检测QQ

android从网络上异步加载图像

研究了android从网络上异步加载图像: (1)由于android UI更新支持单一线程原则,所以从网络上取数据并更新到界面上,为了不阻塞主线程首先可能会想到以下方法. 在主线程中new 一个Handler对象,加载图像方法如下所示 [java] view plaincopyprint? private void loadImage(final String url, final int id) { handler.post(new Runnable() { public void run()

Swarm基于多主机容器网络-overlay networks 梳理

前面介绍了Docker管理工具-Swarm部署记录,下面重点说下Swarm基于多主机容器通信的覆盖网络 在Docker版本1.12之后swarm模式原生支持覆盖网络(overlay networks),可以先创建一个覆盖网络,然后启动容器的时候启用这个覆盖网络, 这样只要是这个覆盖网络内的容器,不管在不在同一个宿主机上都能相互通信,即跨主机通信!不同覆盖网络内的容器组之间是相互隔离的(相互ping不通). swarm模式的覆盖网络包括以下功能: 1)可以附加多个服务到同一个网络. 2)默认情况下