宿主机上docker0 Linux 网桥设备是怎么来的?

简介: 在默认安装情况下, Docker 会在宿主机上创建一个名为 docker0 的 Linux 网桥设备。该网桥设备拥有一个私有网络地址及其所属子网。

在默认安装情况下, Docker 会在宿主机上创建一个名为 docker0 的 Linux 网桥设备。该网

桥设备拥有一个私有网络地址及其所属子网。

分配给 docker0 网桥的子网地址为

  • 172.[17-31].42.1/16
  • 10.[0-255].42.1/16
  • 192.168.[42-44].1/24

中第一个没有被占用的子网地址。因此,很多时候你的 docker0 网桥设备的地址都是 172.17.42.1。所有容器都会连接到该网桥设备上,并从中分配一个位于子网 172.17.42.0/16 中的 IP 地址。容器链接到网桥的网络接口会把 docker0 网络设备作为网关。

d54dcaf3f1624f738249d72c37f75a54.png创建新容器时, Docker 会创建一对网络设备接口,并将它们放到两个独立的网络命名空间:一个网络设备放到容器的网络命名空间(即 eth0);另一个网络设备放到宿主机的网络命名空间,并连接到 docker0 网桥设备上。

通过Pipework理解容器网络

Pipework 能实现的功能几乎都内置在 Docker 中了,但是 Pipework 工具可以对 Docker 网络进行逆向工程。以便更深入了解容器之间以及容器与外部之间是如何通信的

1、启动容器,并下载pipework

2、--net=none 选项启动一个不带网络功能的容器

root@foobar-server:~# docker run -it --rm --net none --name cookbook ubuntu:14.04 bash

f3b3e17fd73d42ec93f890a9885eb96a.png这个容器只有一个本地环回设备,没有其他网络设备,也没有路由信息。如果需要和外部通信,只能手动进行设置。

pipework脚本可以帮我们做这件事情。

3、使用 Pipework 来创建一个完整的网络

root@foobar-server:/vagrant# ./pipework br0 nettest 192.168.1.10/24@192.168.1.254
Warning: arping not found; interface may not be immediately reachable

此时在容器中已经可以看到eth1 设备已启用,并且路由信息已经设置好。


这条命令完成如下四个步骤


• 在宿主机上创建网桥设备 br0。

• 分配 IP 地址 192.168.1.254。

• 在容器内部创建一个网络接口,并为其分配 IP 地址 192.168.1.10。

• 最后在容器内部添加路由信息,将网桥设置为默认网关。

d76139499dd54ef2841bbafcd9e0b7b5.png

126d2a65c40049bda5825698ba3e7d68.png4、查看该 Docker 主机上的网络设备列表


除了默认的 docker0 网桥设备,还会看到多出来一个 br0 设备

root@foobar-server:/vagrant# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 1000
    link/ether 08:00:27:5f:bb:e6 brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.15/24 brd 10.0.2.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:fe5f:bbe6/64 scope link
       valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
    link/ether 56:84:7a:fe:97:99 brd ff:ff:ff:ff:ff:ff
    inet 172.17.42.1/16 scope global docker0
       valid_lft forever preferred_lft forever
4: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
    link/ether 62:c5:12:b3:dc:2f brd ff:ff:ff:ff:ff:ff
    inet6 fe80::f011:baff:fe81:370c/64 scope link
       valid_lft forever preferred_lft forever
6: veth1pl7218: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UP group default qlen 1000
    link/ether 62:c5:12:b3:dc:2f brd ff:ff:ff:ff:ff:ff
    inet6 fe80::60c5:12ff:feb3:dc2f/64 scope link
       valid_lft forever preferred_lft forever
root@foobar-server:/vagrant#

5、 查看网桥信息

bridge-utils 软件包的 brctl 命令

下面胡原始股由 pipework 创建并连接到 br0 的虚拟以太网接口

此时宿主机上就可以访问容器。也可以在容器内访问其他容器了


6、如何访问宿主机之外的网络?


缺少NAT 地址转换规则,而这个 NAT 地址转换(伪装)规则在默认情况下会由 Docker 自动添加。在Docker 宿主机上添加相应的 iptables 规则


添加NAT规则

iptables -t nat -A POSTROUTING -s 192.168.0.0/16 -j MASQUERADE

访问外网

目录
相关文章
|
11月前
|
安全 Linux 网络安全
Nipper 3.9.0 for Windows & Linux - 网络设备漏洞评估
Nipper 3.9.0 for Windows & Linux - 网络设备漏洞评估
282 0
Nipper 3.9.0 for Windows & Linux - 网络设备漏洞评估
|
数据采集 编解码 运维
一文讲完说懂 WowKey -- WowKey 是一款 Linux 类设备的命令行(CLT)运维工具
WowKey 是一款面向 Linux 类设备的命令行运维工具,支持自动登录、批量执行及标准化维护,适用于企业、团队或个人管理多台设备,显著提升运维效率与质量。
|
监控 Linux 开发者
理解Linux操作系统内核中物理设备驱动(phy driver)的功能。
综合来看,物理设备驱动在Linux系统中的作用是至关重要的,它通过与硬件设备的紧密配合,为上层应用提供稳定可靠的通信基础设施。开发一款优秀的物理设备驱动需要开发者具备深厚的硬件知识、熟练的编程技能以及对Linux内核架构的深入理解,以确保驱动程序能在不同的硬件平台和网络条件下都能提供最优的性能。
631 0
|
安全 Ubuntu Linux
Nipper 3.8.0 for Windows & Linux - 网络设备漏洞评估
Nipper 3.8.0 for Windows & Linux - 网络设备漏洞评估
686 0
Nipper 3.8.0 for Windows & Linux - 网络设备漏洞评估
|
运维 安全 Linux
试试Linux设备命令行运维工具——Wowkey
WowKey 是一款专为 Linux 设备设计的命令行运维工具,提供自动化、批量化、标准化、简单化的运维解决方案。它简单易用、高效集成且无依赖,仅需 WIS 指令剧本文件、APT 账号密码文件和 wowkey 命令即可操作。通过分离鉴权内容与执行内容,WowKey 让运维人员专注于决策,摆脱繁琐的交互与执行细节工作,大幅提升运维效率与质量。无论是健康检查、数据采集还是配置更新,WowKey 都能助您轻松应对大规模设备运维挑战。立即从官方资源了解更多信息:https://atsight.top/training。
|
数据采集 运维 安全
Linux设备命令行运维工具WowKey问答
WowKey 是一款用于 Linux 设备运维的工具,可通过命令行手动或自动执行指令剧本,实现批量、标准化操作,如健康检查、数据采集、配置更新等。它简单易用,只需编写 WIS 指令剧本和 APT 帐号密码表文件,学习成本极低。支持不同流派的 Linux 系统,如 RHEL、Debian、SUSE 等,只要使用通用 Shell 命令即可通吃Linux设备。
|
监控 Shell Linux
Android调试终极指南:ADB安装+多设备连接+ANR日志抓取全流程解析,覆盖环境变量配置/多设备调试/ANR日志分析全流程,附Win/Mac/Linux三平台解决方案
ADB(Android Debug Bridge)是安卓开发中的重要工具,用于连接电脑与安卓设备,实现文件传输、应用管理、日志抓取等功能。本文介绍了 ADB 的基本概念、安装配置及常用命令。包括:1) 基本命令如 `adb version` 和 `adb devices`;2) 权限操作如 `adb root` 和 `adb shell`;3) APK 操作如安装、卸载应用;4) 文件传输如 `adb push` 和 `adb pull`;5) 日志记录如 `adb logcat`;6) 系统信息获取如屏幕截图和录屏。通过这些功能,用户可高效调试和管理安卓设备。
10806 2
|
NoSQL Unix Linux
Linux 设备驱动程序(一)(上)
Linux 设备驱动程序(一)
704 62
|
Linux Docker 容器
Centos安装docker(linux安装docker)——超详细小白可操作手把手教程,包好用!!!
本篇博客重在讲解Centos安装docker,经博主多次在不同服务器上测试,极其的稳定,尤其是阿里的服务器,一路复制命令畅通无阻。
23195 5
Centos安装docker(linux安装docker)——超详细小白可操作手把手教程,包好用!!!
|
Java Linux API
Linux设备驱动开发详解2
Linux设备驱动开发详解
404 6

热门文章

最新文章