十二、docker学习-docker核心docker网络之bridge网络(2)

这篇具有很好参考价值的文章主要介绍了十二、docker学习-docker核心docker网络之bridge网络(2)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

bridge网络

bridge网络表现形式就是docker0这个网络接口。容器默认都是通过docker0这个接口进行通信。也可以通过docker0去和本机的以太网接口连接,这样容器内部才能访问互联网。

# 查看docker0网络,在默认环境中,一个名为docker0的linux bridge自动被创建好了,其上有一个 docker0 内部接口,IP地址为172.17.0.1/16 
ip a 
# 查看docker 网络 
docker network ls 
# 查看bridge网络详情。主要关注Containers节点信息。 
docker network inspect bridge

ip a
十二、docker学习-docker核心docker网络之bridge网络(2)
docker network ls
十二、docker学习-docker核心docker网络之bridge网络(2)
docker network inspect bridge
十二、docker学习-docker核心docker网络之bridge网络(2)

docker0详解
运行镜像
docker run -itd --name nginx1 -p 80:80 nginx:1.21.0-alpine

# 查看bridge网络详情。主要关注Containers节点信息。发现nginx1容器默认使用bridge网络
docker network inspect bridge

十二、docker学习-docker核心docker网络之bridge网络(2)

容器创建时IP地址的分配

# 查看docker100主机网络。发现多出一块网卡veth094ff04@if6
ip a

十二、docker学习-docker核心docker网络之bridge网络(2)
Docker创建容器网络流程

Docker 创建一个容器的时候,会执行如下操作:

  • 创建一对虚拟接口/网卡,也就是veth pair,分别放到本地主机和新容器中;
  • 本地主机一端桥接到默认的 docker0 或指定网桥上,并具有一个唯一的名字,如 veth094ff04;
  • 容器一端放到新容器中,并修改名字作为 eth0,这个网卡/接口只在容器的名字空间可见;
  • 从网桥可用地址段中(也就是与该bridge对应的network)获取一个空闲地址分配给容器的 eth0,并配置默认路由到桥接网卡 veth094ff04。

完成这些之后,容器就可以使用 eth0 虚拟网卡来连接其他容器和其他网络。

如果不指定–network,创建的容器默认都会挂到 docker0 上,使用本地主机上 docker0 接口的 IP 作为所有容器的默认网关。

查看容器ip
# 方式一
docker exec -it nginx1 sh
ip a

# 方式二
docker exec -it nginx1 ip a

十二、docker学习-docker核心docker网络之bridge网络(2)

查看网卡绑定关系
# 需要安装一个扩展
yum install -y bridge-utils
brctl show

十二、docker学习-docker核心docker网络之bridge网络(2)
十二、docker学习-docker核心docker网络之bridge网络(2)

流程图

十二、docker学习-docker核心docker网络之bridge网络(2)

多容器之间通讯
IP通信测试
# 创建两个nginx容器进行通信
docker run -itd --name nginx1 nginx:1.21.0-alpine
docker run -itd --name nginx2 nginx:1.21.0-alpine
docker network inspect bridge 

# 进入nginx1进行ping测试
docker exec -it nginx1 sh 
ping 172.17.0.3 
# 进入nginx2进行ping测试
docker exec -it nginx2 sh 
ping 172.17.0.2 
# ping外网测试
ping www.baidu.com

十二、docker学习-docker核心docker网络之bridge网络(2)

容器名通信测试
docker exec -it nginx2 ping nginx1
docker exec -it nginx1 ping nginx2
启动顺序不同ip不同
# 启动顺序不同ip互换了
docker run -itd --name nginx2 nginx:1.21.0-alpine
docker run -itd --name nginx1 nginx:1.21.0-alpine

十二、docker学习-docker核心docker网络之bridge网络(2)

问题【容器名无法通信】

通过容器名ping不通,证明无法通过容器名进行通信,但是由于ip是随机生成的每次启动都会变,如何解决?

容器名通信方式
方式一:link容器

–link=[]: 添加链接到另一个容器;【不推荐使用】

不推荐原因

  • 需要手动指定那个容器需要可以进行连接;
  • 集群增加新的节点如果需要进行连接需要重新操作;
  • link关系是单向的,不可逆;
  • docker官网已经不推荐我们使用link参数;
  • docker用其他方式替换掉link参数;

使用方式

docker run -itd --name nginx2 --link nginx1 nginx:1.21.0-alpine

# 可ping通
docker exec -it nginx2 ping 172.17.0.2 
docker exec -it nginx2 ping nginx1

# 无法ping通【link关系是单向的,不可逆】
docker exec -it nginx1 ping nginx2

十二、docker学习-docker核心docker网络之bridge网络(2)

方式二:新建bridge网络
# 创建一个网络
# 参数-d指DRIVER的类型,后面的test-bridge是network的自定义名称,这个和docker0是类似的。
docker network create -d bridge test-bridge

十二、docker学习-docker核心docker网络之bridge网络(2)

将容器通过参数network connect来连接test-bridge网络。

# 查看网络详情
brctl show 
docker network ls 
docker network inspect lagou-bridge

# 创建容器两个容器 nginx1,nginx2
docker run -itd --name nginx1 --network test-bridge nginx:1.21.0-alpine
docker run -itd --name nginx2 --network test-bridge nginx:1.21.0-alpine

# ping一下
docker exec -it nginx2 ping nginx1
docker exec -it nginx1 ping nginx2

十二、docker学习-docker核心docker网络之bridge网络(2)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-U0aG8cQG-1687093570008)(file:///Users/yangcun/Documents/学习/Markdown/images/docker.assets/image-20210706102818505.png?msec=1687092439628)]文章来源地址https://www.toymoban.com/news/detail-500393.html

容器通信总结
  • 想要容器之间通过容器名进行互相访问docker提供了两种方式,分别是link和新建自己的bridge网络。
  • 通过link容器进行连接,但是是单向的,docker官方不推荐使用的。不利于扩展。
  • 通过自己创建的bridge网络默认就是可以在同一个网络进行互联的。

到了这里,关于十二、docker学习-docker核心docker网络之bridge网络(2)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 11.docker的网络-docker0的理解及bridge网桥模式的介绍与实例

    安装完docker服务后,我们首先查看一下宿主机的网络配置 我们可以看到,docker服务会默认在宿主机上创建一个虚拟网桥docker0,该网桥网络的名字称为docker0。它在内核层连通了其他物理或者虚拟网卡,这就可以将所有容器和宿主机都放在了同一个物理网络。Docker默认指定了

    2024年02月04日
    浏览(40)
  • 【Docker】Docker network之bridge、host、none、container以及自定义网络的详细讲解

    🚀欢迎来到本文🚀 🍉个人简介:陈童学哦,目前学习C/C++、算法、Python、Java等方向,一个正在慢慢前行的普通人。 🏀系列专栏:陈童学的日记 💡其他专栏:C++STL,感兴趣的小伙伴可以看看。 🎁希望各位→点赞👍 + 收藏⭐️ + 留言📝 ​ ⛱️万物从心起,心动则万物动🏄

    2024年02月12日
    浏览(38)
  • 【Nginx15】Nginx学习:HTTP核心模块(十二)内嵌变量

    关于内嵌变量,其实就是 Nginx 开放给我们的在配置文件中可以使用的变量。源码中无非就是替换成真实的代码变量进行操作。这些变量可以帮助我们做很多事情。之前的文章中其实也有不少地方用到了,比如说  $uri  这个变量,是不是已经见过很多次了。而且这些变量基本

    2024年02月14日
    浏览(42)
  • 十五、docker学习-docker核心docker数据卷

    什么是数据卷 当我们在使用docker容器的时候,会产生一系列的数据文件,这些数据文件在我们删除docker容器时是会消失的,但是其中产生的部分内容我们是希望能够把它给保存起来另作用途的,Docker将应用与运行环境打包成容器发布,我们希望在运行过程钟产生的部分数据是

    2024年02月11日
    浏览(79)
  • 计算机视觉基础知识(十二)--神经网络与深度学习

    一种机器学习的算法 一般有输入层--隐藏层--输出层 隐藏层数量多于两个的称为深度神经网络; 输入的是特征向量; 特征向量代表的是变化的方向; 或者说是最能代表这个事物的特征方向; 权重是特征值,有正有负,加强或抑制; 权重的绝对值大小,代表输入信号对神经元的影响大小

    2024年02月21日
    浏览(59)
  • PyTorch入门学习(十二):神经网络-搭建小实战和Sequential的使用

    目录 一、介绍 二、先决条件 三、代码解释 一、介绍 在深度学习领域,构建复杂的神经网络模型可能是一项艰巨的任务,尤其是当您有许多层和操作需要组织时。幸运的是,PyTorch提供了一个方便的工具,称为Sequential API,它简化了神经网络架构的构建过程。在本文中,将探

    2024年02月05日
    浏览(43)
  • Docker中的bridge模式,可以这么设置

    最近有几个已经就业的小伙伴,过来问千锋健哥关于Docker网络配置的问题,他们在实际开发中还是有些疑问。关于Docker网络这一块的内容确实很多,为了让大家搞清楚这个问题,健哥准备搞几篇系列文章,来为各位小伙伴解惑。这次健哥带来的是Docker网络的Bridge模式,接下来

    2023年04月24日
    浏览(35)
  • 网络安全进阶学习第十二课——SQL手工注入3(Access数据库)

    判断数据库类型 —— 判断表名 —— 判断列名 —— 判断列名长度 —— 查出数据。 asp的网站,常用数据库为access、sqlserver。 and exsits (select * from msysobjects)0 access and exsits (select * from sysobjects)0 sqlserver 上述语句 会返回1或者0 。 msysobjects是access的默认数据库 , sysobjects是sqlserv

    2024年02月11日
    浏览(55)
  • Linux 网络编程学习笔记——十二、高性能 I/O 框架库 Libevent

    在处理 I/O 事件、信号和定时事件时,需要考虑如下三个问题: 统一事件源:很明显,统一处理这三类事件既能使代码简单易懂,又能避免一些潜在的逻辑错误。 可移植性:不同的操作系统具有不同的 I/O 复用方式,比如 Solaris 的 dev/poll 文件,FreeBSD 的 kqueue 机制,Linux 的

    2023年04月08日
    浏览(57)
  • UNIX网络编程卷一 学习笔记 第二十二章 高级UDP套接字编程

    TCP是一个字节流协议,又使用滑动窗口,因此没有记录边界或发送者数据发送能力超过接收者接收能力之类的事情,但对于UDP,每个输入操作对应一个UDP数据报(一个记录),因此当收取的数据报大于引用的输入缓冲区时就有问题。 UDP是不可靠协议,但有些应用确实有理由使

    2024年02月12日
    浏览(60)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包