为了账号安全,请及时绑定邮箱和手机立即绑定

『中级篇』 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:主要理解容器之前如何的互相访问,容器和外边的世界如何通信。

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
全栈工程师
手记
粉丝
1.7万
获赞与收藏
1318

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消