Docker中的bridge模式,可以这么设置

news2024/11/29 2:45:29

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

Docker容器和服务之所以强大的原因之一,是可以将它们连接在一起,或者将它们连接到非Docker的工作负载上。而Docker容器和服务甚至都不需要知道它们部署在Docker容器上。无论Docker主机是运行在Linux、window上,或者两者混合运行,都可以使用Docker以与平台无关的方式来管理它们。

而这一切的基础,都是缘于Docker网络提供的强大功能和良好设计!

. 操作环境

我们先说一下运行所需要的环境,如下:

  • centos 7.x版本

  • docker版本:Docker version 20.10.18, build b40c2f6

  • xshell 7

. Docker network 常用命令

我们先来看看Docket中提供的常用network命令。

1.查看docker network帮助手册

[root@hecs-215393 ~]# docker network --help  # 查看docker network 帮助手册

Usage:  docker network COMMAND

Manage networks

Commands:
  # 通过网络连接容器
  connect     Connect a container to a network
  # 创建一个网络连接
  create      Create a network
  # 关闭容器连接
  disconnect  Disconnect a container from a network
  # 显示一个或多个网络上的详细信息
  inspect     Display detailed information on one or more networks
  # 列出所有网络
  ls          List networks
  # 删除所有未使用的网络
  prune       Remove all unused networks
  # 删除一个或者多个网络
  rm          Remove one or more networks

Run 'docker network COMMAND --help' for more information on a command.
[root@hecs-215393 ~]# 

2.列出docker网络

[root@hecs-215393 ~]# docker network ls # 列出docker网络
NETWORK ID     NAME      DRIVER    SCOPE
5b15d96cf179   bridge    bridge    local
12bf219add93   host      host      local
66b6768156e6   none      null      local
[root@hecs-215393 ~]# 

3.通过docker network create创建一个网络

[root@VM-8-11-centos ~]# docker network ls
NETWORK ID     NAME      DRIVER    SCOPE
52f8e50a864d   bridge    bridge    local
5534ad5d6eca   host      host      local
d60aa65de36e   none      null      local
# 创建一个docker网络
[root@VM-8-11-centos ~]# docker network create qf
6fc2499a6dd26591e1b61f1d20e3c9c61f4b64e3de77b7a832be0f68572ec279

# 再次查看一下当前的网络状态
[root@VM-8-11-centos ~]# docker network ls
NETWORK ID     NAME      DRIVER    SCOPE
52f8e50a864d   bridge    bridge    local
5534ad5d6eca   host      host      local
d60aa65de36e   none      null      local
6fc2499a6dd2   qf        bridge    local
[root@VM-8-11-centos ~]# 

4.查看qf网络的详细信息

[root@VM-8-11-centos ~]# docker network inspect qf
[
    {
        "Name": "qf",
        "Id": "6fc2499a6dd26591e1b61f1d20e3c9c61f4b64e3de77b7a832be0f68572ec279",
        "Created": "2022-10-09T16:41:48.505578412+08:00",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": {},
            "Config": [
                {
                    "Subnet": "172.19.0.0/16",
                    "Gateway": "172.19.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {},
        "Options": {},
        "Labels": {}
    }
]
[root@VM-8-11-centos ~]#  

. Docker网络的作用

在开始学习Docker网络用法之前,我们再来了解一下Docker网络的作用,主要作用如下:

  1. Docker网络可以负责容器间的相互连接和通信,以及端口映射;

  2. 当容器`ip`地址发生更改时,可以通过服务名称进行网络通信,不会因为`ip`的更改导致服务不可用。

. 网络模式

Docker的网络有以下几种网络模式。

网络模式说明

bridge, 虚拟网桥, 默认模式

每一个容器有独立的ip, 并将容器连接到docker0网桥上

host

使用宿主机的ip和端口号, 容器不会虚拟出自己的网卡、配置ip

none

有独立的network namespace,但是并未对其进行任何网络设置

container

和一个指定的容器共享ip和端口号, 不会虚拟出网卡、配置ip等操作.

1. bridge模式

网桥模式,是docker默认的网络模式。

1.1 案例说明

我们可以创建两台centos容器,分别进入这两台容器中查看网络情况,查看ip是否相同。

进入容器,查看各自的ip地址。

结论:通过观察可以发现,这两个centos容器的ip地址并不相同。docker服务默认会创建一个docker0网桥,它在内核层连通了其它物理或者虚拟网卡,它会将所有容器和本机放到同一个物理网络。docker默认指定了docker0接口的ip地址和子网掩码,让主机和容器之间通过互相通信。

1.2 在宿主机中查看docker0网桥

[root@VM-8-11-centos ~]# ifconfig
br-6fc2499a6dd2: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 172.19.0.1  netmask 255.255.0.0  broadcast 172.19.255.255
        ether 02:42:4d:db:86:7e  txqueuelen 0  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

docker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.17.0.1  netmask 255.255.0.0  broadcast 172.17.255.255
        inet6 fe80::42:51ff:fe04:52a8  prefixlen 64  scopeid 0x20<link>
        ether 02:42:51:04:52:a8  txqueuelen 0  (Ethernet)
        RX packets 38121  bytes 10882894 (10.3 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 37569  bytes 6650084 (6.3 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.0.8.11  netmask 255.255.252.0  broadcast 10.0.11.255
        inet6 fe80::5054:ff:fe78:5b59  prefixlen 64  scopeid 0x20<link>
        ether 52:54:00:78:5b:59  txqueuelen 1000  (Ethernet)
        RX packets 4294502  bytes 424094659 (404.4 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 4245669  bytes 638810894 (609.2 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 11  bytes 1488 (1.4 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 11  bytes 1488 (1.4 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

veth0593288: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet6 fe80::6434:bff:fe38:6a0c  prefixlen 64  scopeid 0x20<link>
        ether 66:34:0b:38:6a:0c  txqueuelen 0  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 9  bytes 698 (698.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

veth340b971: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet6 fe80::dcb5:69ff:fe5a:d5e2  prefixlen 64  scopeid 0x20<link>
        ether de:b5:69:5a:d5:e2  txqueuelen 0  (Ethernet)
        RX packets 19  bytes 1714 (1.6 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 23  bytes 2670 (2.6 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0   
  • docker使用linux进行桥接,在宿主机上虚拟一个docker网桥「docker0」。docker启动一个容器会根据docker网桥的网段,分配给容器一个ip地址,称为container-ip。

  • docker网桥是每个容器的默认网关,同一台宿主机内的容器都会接入一个网桥,这样容器之间就能通过container-ip进行通信了。

  • 当创建容器的时候,如果没有指定网络模式,默认会使用bridge,使用的就是docker0。在宿主机执行ifconfig时,可以查看到docker0或者自己创建的网络。

  • eth0, eth1… 代表网卡一,网卡二…

  • lo, 表示本地回环网络。

  • inet ip用来表示网卡的ip地址。

2. bridge模式详解

  • 整个宿主机的网桥模式都是docker0,类似于一个交换机有一大堆接口,每个接口都可以称为veth。在宿主机和容器内分别创建一个虚拟接口,并让他们彼此连通「veth pair」;

  • 每个实例内部都有一块网卡,每个接口可以称为eth0。

  • docker0上面每个veth,匹配某个容器内部的eth0,一一配对 或 两两配对。

  • 重要结论宿主机上的所有容器都连接到这个内部网络上两个容器在同一个网络下会从这个网卡拿到分配的ip,此时两个容器的网络是互通的

2.1 验证案例

启动两台centos容器,在宿主机当中查看网络在情况. ip addr

进入mycentos01容器。

进入mycentos02容器。

宿主机eth0, docker0与容器内eth0之间的对应关系。

完整图示:

2.2 bridge使用的正确姿势

# 启动容器的时候,显示的指定为bridge模式
--network bridge或者--network=bridge

. 总结

各位小伙伴,今天千锋健哥为大家带来的birdge模式就是这些内容了,是不是很容易理解呢?

docker网络作为整个docker体系中极为重要的一个知识点,在生产中经常被用到,尤其是网络模式当中的bridge模式和host模式更是应该重点掌握。

自定义网络,可以通过服务名称「容器名称」进行容器间的通信。自动处理了容器名称与ip地址的映射关系,这样使得容器间通信更为可靠和容易。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/85322.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

小游戏开发者流量变现指南

2018年微信在其6.6.1版本中宣布支持小游戏&#xff0c;之后的几年&#xff0c;但凡能掀起各大社交平台上病毒式传播的&#xff0c;几乎都是小游戏。 小游戏玩法简单&#xff0c;传播机制简单&#xff0c;套路简单&#xff0c;连赚钱的本质也简单。就拿近期火爆的《羊了个羊》小…

程序员也可以很浪漫,精选10个圣诞节特效及源码

最近离圣诞节不远了、整理了一些关于圣诞相关的前端特效网页设计和小游戏的代码送大家、直接上效果吧。 代码过长的 可预览获取 圣诞节快乐 - 文字渐入动画 <body><svg viewport"0 0 300 300"><text class"Merry" x"150" y&qu…

货淋室及货通道维护要点有哪些

货淋室及货淋通道维护要点&#xff0c;货淋室是货物进入洁净室所必需的通道&#xff0c;它可以减少货物进出洁净室所带来的污染问题。 货淋室及货淋通道维护要点&#xff1a; 1、定期使用仪器测定设备的各项技术指标&#xff0c;如不符合技术参数要求应及时予以处理。 2、根…

高低jdk版本中jndi注入(下)

目录 0x01 绕过高版本JDK&#xff08;8u191&#xff09;限制 如下两种绕过方式&#xff1a; 0x02 利用本地恶意Class作为Reference Factory 2.1 攻击利用 1. 服务端 2. 服务端 2.2 几种变体的表达式 调试分析 小结 0x03 利用LDAP返回序列化数据&#xff0c;触发本地Gadg…

nacos--基础--5.1--集成--SpringCloud--配置管理、服务发现、服务注册

nacos–基础–5.1–集成–SpringCloud–配置管理、服务发现、服务注册 代码位置 https://gitee.com/DanShenGuiZu/learnDemo/tree/master/nacos-learn/nacos-spring-cloud1、介绍 主要面向 Spring 的使用者通过2个实例&#xff0c;来介绍nacos和Spring的集成 配置管理服务注册…

运行时发现文件路径输出404

运行时发现文件路径输出404 tomcat不能显示中文原因主要是编码的问题&#xff0c; 因为Tomcat5的http Connector所用的URI解码默认用的是 ISO-8859-1&#xff0c; 而一般浏览器默认用的发送编码为UTF-8&#xff0c;这样问题就出现了&#xff0c; 初步的解决方法如下&#xff1a…

Mentor-dft 学习笔记 day40-Basic Test Data Formats for Patterns

Reduce Serial Loading Simulation Time with Sampling 使用write_patterns命令时&#xff0c;可以使用-sample开关保存完整pattern集的样本。这将减少pattern文件中的pattern数量&#xff0c;从而减少模拟时间。此外&#xff0c;-Sample开关允许您控制样本中包含的每种类型的p…

回归预测 | MATLAB实现WOA-BiLSTM鲸鱼算法优化双向长短期记忆神经网络多输入单输出航空寿命数据回归预测

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;修心和技术同步精进&#xff0c;matlab项目合作可私信。 &#x1f34e;个人主页&#xff1a;Matlab科研工作室 &#x1f34a;个人信条&#xff1a;格物致知。 更多Matlab仿真内容点击&#x1f447; 智能优化算法 …

ADI Blackfin DSP处理器-BF533的开发详解48:图像处理专题-Rotation (图像旋转处理)(含源码)

硬件准备 ADSP-EDU-BF533&#xff1a;BF533开发板 AD-HP530ICE&#xff1a;ADI DSP仿真器 软件准备 Visual DSP软件 硬件链接 功能介绍 代码实现了图像旋转处理&#xff0c;代码运行时&#xff0c;会通过文件系统打开工程文件根目下" …/ImageView"路径中的 tes…

【OpenCV-Python】教程:5-1 背景减法

OpenCV Python 背景减法 【目标】 读视频与显示视频创建背景模型与更新背景模型 【概述】 背景相减&#xff08;BS&#xff09;是一种常用且广泛使用的技术&#xff0c;用于通过使用静态相机来生成前景掩模&#xff08;即&#xff0c;包含属于场景中运动对象的像素的二值图…

UEFI固件使用OpenSSL暴露了软件材料清单(SBOM)

Binarly REsearch团队近日深入研究了最近的OpenSSL安全更新给UEFI固件供应链生态系统带来怎样的影响以及OpenSSL版本在固件环境中是如何广泛使用的。研究结果不容乐观。 科技行业正在积极讨论使用“软件材料清单”&#xff08;SBOM&#xff09;来化解供应链安全风险。为了确保…

前端面试常考 | js闭包

文章目录一. 闭包1. 介绍闭包2. 闭包的作用3. 闭包与变量二. 闭包引起的内存泄漏1. 闭包是如何引起内存泄漏的2. 如何解决闭包引起的内存泄漏三. 最后一. 闭包 1. 介绍闭包 有不少开发人员总是搞不清楚匿名函数与闭包两个概念&#xff0c;因此经常混用。同时闭包也是我们前端…

我见过最好的天线基础知识

天线作为无线电的发射和接收设备是影响信号强度和质量的重要设备,其在移动通信领域的重要性非常关键。通过对天线选型,天 线安装,天线调整从而保障基站覆盖区域的信号强度与质量。对其的 掌握程度是网规与网优工程师的技能基本要求之一。下文重点说明天线要掌握哪些方面及其原理…

版本控制 | 如何将 UnrealGameSync 与 Perforce Helix Core 结合使用

为了帮助虚幻引擎4和虚幻引擎5的开发&#xff0c;Epic公司开发了UnrealGameSync&#xff0c;使其与版本控制工具Perforce Helix Core交互。虽然UnrealGameSync除了P4V (Helix Core客户端)之外还有许多功能&#xff0c;但主要用途是分发内部引擎和项目构建&#xff0c;它极大地简…

springboot+vue

一、案例结构 用springboot做后端接口&#xff0c;采用restful风格。用vue-cli来创建前端项目&#xff0c;通过axios进行前后端交互。来实现用户的增删改查操作。二、效果图 点击修改&#xff1a; 点击添加&#xff1a; 三、服务器端 控制层代码&#xff1a; package com.ex…

【Tryhackme】dogcat(LFI+文件解析漏洞,Docker逃逸)

免责声明 本文渗透的主机经过合法授权。本文使用的工具和方法仅限学习交流使用&#xff0c;请不要将文中使用的工具和渗透思路用于任何非法用途&#xff0c;对此产生的一切后果&#xff0c;本人不承担任何责任&#xff0c;也不对造成的任何误用或损害负责。 服务发现 ┌──(r…

CentOS7.4安装教程

CentOS7.4安装教程&#xff1a; centos系统自行网上查找链接下载&#xff0c;我使用的是最小安装版本&#xff0c;搞服务器用 1、进入操作系统&#xff0c;选择第一项进行安装&#xff1a; 2、耐心等待&#xff0c;直到弹出这个界面&#xff1a; 3、下拉选择中文&#xf…

磷脂-荧光素标记DSPE-FITC磷脂改性荧光素

磷脂-荧光素标记DSPE-FITC磷脂改性荧光素 中文名称&#xff1a;荧光素标记二硬脂酰磷脂酰乙醇胺 中文别称&#xff1a;磷脂-荧光素标记&#xff1b;二硬脂酰磷脂酰乙醇胺改性荧光素 英文名称&#xff1a;18:0 PE Fluorescein 英文别称&#xff1a;DSPE-FITC 外观&#xff1a…

开发人员的绝佳生产力工具

介绍 从长远来看&#xff0c;每天工作 8 小时对您没有帮助&#xff0c;但利用这些来最大化产出肯定会让您受益。这就是为什么生产力是最重要的事情之一。 今天&#xff0c;我们将学习一些很棒的工具&#xff0c;它们可以提高您的工作效率。除非并且直到您将这些工具集成到您的…

【Lilishop商城】No3-7.模块详细设计,订单模块-1(购物车、收银台)的详细设计

仅涉及后端&#xff0c;全部目录看顶部专栏&#xff0c;代码、文档、接口路径在&#xff1a; 【Lilishop商城】记录一下B2B2C商城系统学习笔记~_清晨敲代码的博客-CSDN博客 全篇会结合业务介绍重点设计逻辑&#xff0c;其中重点包括接口类、业务类&#xff0c;具体的结合源代…