专栏首页编程坑太多『中级篇』 Docker Bridge详解(26)
原创

『中级篇』 Docker Bridge详解(26)

上节主要学习了network-namespace,并创建了network-namespace,并把2个network-namespace连接在一起,我们也演示了创建一个容器test1和test2,其实在创建容器的同时也创建了对应的一个network-namespace,因为对应的一个容器他有自己的独立网络空间。test1通过exec ip a的方式查看对应的ip,和test2 通过exec ip a的方式查看对应的ip。他们之前是互相可以ping通的。

到底docker的网络是如何配置的
sudo service docker restart
sudo docker container start test1
sudo docker container start test2
sudo docker docker exec -it test1 /bin/sh
ping www.baidu.com
  • 这里的代码紧接上一节,vagrant启动虚拟机docker-node1,通过docker-node1启动里面的容器test1 和test2,当进入test1容器,ping baidu发现可以ping通。这是什么原理呢,肯定是通过可以转接的方式,容器---虚拟机----宿主机--baidu。
为了更好的了解docker网络
  • 停止test2,删除test2
sudo docker ps
sudo docker stop test2
sudo docker rm test2
sudo docker ps
  • docker 网络可以看到一个 ,这也是linux中常见的一种网络结构。桥接的形式sudo docker network ls

对于test1 来讲,他是通过bridge的方式

sudo docker inspect test1
ip a

这个机器有5个网路,除了lo,eth0,eth1,docker0,veth8765ce0@if5,上节课讲过veth其实是连接了2个networknamespace,veth8765ce0@if5是负责连接docker0上边的,容器test1里面也应该有个和veth连接的。

sudo docker exec test1 ip a

eth0@if6 和外边的veth8765ce0@if5 其实是一对。

查看他们的关系
sudo yum install -y bridge-utils
#安装后可以运行brctl这个命令了
brctl
brctl show

因为目前就一个test1的桥接,所以就显示一个。

sudo docker run -d --name test2 busybox /bin/sh -c "while true; do sleep 3600;done"
brctl show
sudo docker network inspect bridge
ip a

多创建了容器,其实多了一对veth,容器内多了veth,宿主内也增加了veth,其实就类似一个线,他们互相连接。

test1 和test2 之前通过docker0,docker0 类似test1和test2之前的路由器,docker0 在通过nat的eth0连接互联网

PS:主要理解容器之前如何的互相访问,容器和外边的世界如何通信。


image

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 『中级篇』 Docker Bridge详解(26)

    IT故事会
  • 『中级篇』 容器之间的Link(27)

    PS:用户自定义的bridge 和 docker0 这个bridge他们之前的区别,docker0 如果通过名称想找到需要通过link,实际的项目中很少使用li...

    IT故事会
  • 『中级篇』 容器之间的Link(27)

    PS:用户自定义的bridge 和 docker0 这个bridge他们之前的区别,docker0 如果通过名称想找到需要通过link,实际的项目中很少使用li...

    IT故事会
  • 如何让docker容器和宿主机在一个网段,并组成局域网 转

    (adsbygoogle = window.adsbygoogle || []).push({});

    双面人
  • Jetson TX1开发笔记(二):TX1开发前必做的几件事

    嵌入式平台: Jeston TX1     在上篇博客中,博主已经使用Jetpack3.0为Jetson TX1刷了最新的系统。但是,在开发前,个人感觉有几个...

    Jack_Cui
  • Tensorflow BatchNormalization详解:3_使用tf.layers高级函数来构建带有BN的神经网络

    [1]吴恩达deeplearningai课程: http://mooc.study.163.com/learn/2001281003?tid=200139103...

    DrawSky
  • 基于Redis实现分布式应用限流

    限流的目的是通过对并发访问/请求进行限速或者一个时间窗口内的的请求进行限速来保护系统,一旦达到限制速率则可以拒绝服务。 前几天在DD的公众号,看了一篇关于使用 ...

    冷冷
  • Istio Helm Chart 详解 - Galley

    这里可以看到 Galley 使用 Service Account istio-galley-service-account 的身份运行。全局变量中如果定义了 i...

    崔秀龙
  • ThinkPHP6.0任意文件创建Getshell复现

    ThinkPHP框架是MVC结构的开源PHP框架,遵循Apache2开源协议发布,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。该漏洞源于ThinkPHP...

    Timeline Sec
  • MySQL5.6的4个自带库详解

      information_schema数据库是MySQL自带的,它提供了访问数据库元数据的方式。什么是元数据呢?元数据是关于数据的数据,如数据库名或表名,列的...

    changxin7

扫码关注云+社区

领取腾讯云代金券