通过实验带你了解:docker是如何创建并打通容器网络的

[frps selfhost版]有没想过起个容器就能打通整个内网呢? 使用容器打通受限网络: frp+ssh组合镜像以及sshuttle打通网络 使用容器打通受限网络: frp+ssh组合镜像以及sshuttle实现打通任意环境所有内网服务(包括k8s)(web页面以及终端访问) 阅读详情

作者介绍:严霞,负责产品云内DNS和云解析的架构搭建、关键功能研发工作与难点问题攻关,负责组内两套kubernetes的集群搭建与维护。对 权威DNS服务、kubernetes、spring boot、基础网络、linux底层感兴趣,欢迎一起探讨,共同进步。

概要:容器之间的网络端口是怎样隔离的?容器之间、容器与宿主机之间网络又是如何通信的?本文用实验带着大家一起了解

1. docker网络概览

首先让我们对docker网络有一个整体的了解。

docker安装完成后,都会默认分配一个172.17.0.0/16的网段。一台机器上新创建的第一个容器,一般都会给172.17.0.2这个地址。并且会创建一个docker0的网桥, 刚安装时,网桥上没有挂网卡。

[root@fnc05 ~]# brctl show docker0
bridge name     bridge id               STP enabled     interfaces
docker0         8000.02420217fbb1       no

没经过特殊配置时,docker0这个网桥挂的地址都是172.17.0.1

[root@fnc05 ~]# ip addr
3: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
    link/ether 02:42:02:17:fb:b1 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever
    inet6 fe80::42:2ff:fe17:fbb1/64 scope link
       valid_lft forever preferred_lft forever

启动一个bridge类型的容器

[root@fnc05 ~]# docker run -dt --net=bridge --name siege-bridge1 -p 10081:80 quay.io/centminmod/docker-centos6-siege
d78665d0c7357166349c95315e89799902d6ce14f8b043ae0a71f4a7be2d3a2b

查看docker0网桥上,挂了一个veth pair的一端

[root@fnc05 ~]# brctl show docker0
bridge name     bridge id               STP enabled     interfaces
docker0         8000.02420217fbb1       no              veth641364e

查看容器内部的network namespace情况

[root@fnc05 ~]# docker exec -it d78665d0c7357166349c95315e89799902d6ce14f8b043ae0a71f4a7be2d3a2b /bin/sh
sh-4.1# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1000
    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
8: eth0@if9: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue state UP
    link/ether 02:42:ac:11:00:03 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.3/16 brd 172.17.255.255 scope global eth0
       valid_lft forever preferred_lft forever

接下来让我们开始用实验来复盘docker创建容器网络并打通网络的过程吧

2. network namespace创建

namespace是Linux提供的一个用于隔离的技术。容器之间互相无感知,都是它的功劳。为了支持网络协议栈的多个实例(为了网络隔离),Linux在网络协议栈中引入了network namespace的概念,并提供了clone函数。docker 和 k8s就是直接调用clone函数来实现容器网络创建的。

network namespace : 隔离网络资源的一个概念。 每个network namespace都有自己的一套网络设备 ( 网卡IP、路由表、端口范围、防火墙、/proc/net目录 )。
同一个network namespace内的进程能够相互访问到, 端口不允许冲突。两个ns之间, ns与宿主机之间,网络是完全隔离的。

docker和k8s怎么处理network namespace的

docker 容器之间网络通讯 自建docker网络 前言: 我们可能用到多个容器,但是容器之间需要网络传入,他们是怎么工作的? 有没有办法不通过ip地址强制绑定? 首先我们先运行两个tomcat的容器来做测试 [root@localhost ~]# docker run -p8080:8080 -d --name tomcat01 tomcat #查看tomcat01容器的网络地址 [root@localhost ~]# docker exec -it tomcat01 ip addr 1: lo: <LOOPBACK,UP,LOWER_UP> 阅读详情

相关推荐

掌握Docker网络配置:让你的容器与外界畅通无阻

容器进程可以跟主机 root 进程一样可以打开低范围的端口,可以访问本地网络服务比如 D-bus,还可以让容器做一些影响整个主机系统的事情,比如重启主机。:让 Docker 将新建容器的进程放到一个已有容器的网络堆栈中,新容器进程有自己的文件系统、进程列表和资源限制,但会和已有容器共享 IP 地址和端口等网络资源,两者进程可以直接通过 lo 环回接口通信。当容器结束后,Docker 会清空容器,容器内的 eth0 会随网络命名空间一起被清除,A 接口也被自动从 docker0 卸载。

zgt_certificate的博客 1449

mac docker 宿主机和容器间网络打通

是这样,笔者最近满怀欣喜入手Docker,看着各种文章命令都是不断点头称道:“嗯嗯,不错不错”,在接下来终于准备大干一场的时候碰壁了,主要情况是说在Mac中跑了第一把的时候发现碰到,虚拟机和宿主机居然是不通的,当然也找了一下资料说linux才是天然支持docker滴,底层都有cgroup,clx吧啦吧啦,mac,windows这种其实是底层干了波虚拟机,然后要转发啥的。从我过去多次学习大数据组件入门到放弃的情况来说,网络这种事情要提前解决,不能卡着,否则后面很多破事情。

敏叔 2150

docker网络

理解Docker0 三个网络: 问题: docker是如何处理容器网络访问的? 启动一个tomcat容器 docker run -d -P --name tomcat01 tomcat 查看容器的内部网络地址ip addr,发现容 器启动的时候会得到一个 eth0@if114 ip地址, docker分配的! docker exec -it tomcat01 ip addr 思考:liunx能不能ping通容器内部? 可见linux可以Ping通容器内部 原理: 1、我们每启动一个docke

qq_41784749的博客 1万+

(十六)Docker 创建自定义网络及网络连通

目录 创建自定义的网络 桥接网络 bridge network 创建 网桥类型的自定义网络 1.查看所有的docker网络:docker network ls 2.创建自定义网络命令:docker network create 3.查看自己定义的网络相关信息 4.使用自定义网络中的网桥创建容器 5.再次使用 docker network inspect mynet 查看网络信息 创建自定义的网络 Docker提供用于创建这些网络的默认网络驱动程序。 默认可以创建如下几种网络: bri

Bertram的博客 1万+

vmware vsphere5---部署vCSA(VMware vCenter Server)附带第二阶段安装报错解决方案

因为这份文档我是边做边写的,遇到问题重新装了好几次所以IP会很乱ESXI主机为192.168.20.10VCSA为192.168.20.7,后台为192.168.20.7:5480后期请自行对应,后面的192.168.20.57请对应192.168.20.7,或根据自己的来。

m0_70212665的博客 5716

LTE/NR中的相应cause场景【原创】

目录1.背景2.LTE EMM cause2.0 写在最前2.1 特殊处理的cause第一梯队第二梯队2.2 非特殊处理的cause3.NR cause 实网分析终端被拒等问题,经常遇到各类cause,其会对应不同的终端限制行为。查找已有资料后理解没有很深,自行总结本文用于梳理现象,如有错误敬请指正,转载请注明出处。 本文用于记录协议Ts 24.301及Ts 24.501中的cause及其对应行为。 已总结的cause值: 24.301中的cause分

2301_79567300的博客 3500

从零开始:使用VMOS Pro和Xposed绕过APP环境检测的完整指南

本文详细解析了使用VMOS Pro和Xposed框架绕过APP环境检测的完整技术方案,包括模拟器检测、Root环境检测和Hook框架检测的对抗方法。通过实战案例和代码示例,展示了如何利用Xposed Hook技术拦截检测逻辑,特别针对360加固等保护技术提供了解决方案。

ee345的博客 737

2023年下半年网络工程师案例分析真题答案解析

R1] ip route-static 0.0.0.0 0.0.0.0 GigabitEthemet2/0/1 (3) track (4) R1 to R2 //配置R1的缺省路由,联动BFD使得R1到2的流量优先走R1->S1->R2链路,当此链路发生故障时,流量切换到R1->R3->R2链路上。当同一VLAN内也需要网络隔离时,我们可采用交换机的(2)功能,若在配置了二层隔离后,部分主机有互通的需求,则可在需求主机的网关上配置(3)功能。不需要,MAC地址是数据链路层封装以太帧的地址标识。

鹿鸣天涯 752

【机器学习与数据挖掘实战 | 医疗】案例18:基于Apriori算法的中医证型关联规则分析

本案例针对三阴乳腺癌患者,经问卷调查收集数据并筛选处理形成原数据,经清洗、特征选择与变换后,构建Apriori模型,基于业务理解与建模结果,分析患者症状与中医证型关联,并据症状给出建议 。

Morse_Chen的博客 1385

GameFramework框架详解之 DataTable配置表模块

一.前言: DataTable模块是项目的配置表模块,配置表一般是从excel导出csv/json/xml格式的,之所以是excel作为源文件,原因是因为策划同学使用配表最方便。然后一键导出到项目中,除了csv/json/xml配置文件外,一般还会伴随着导出配置的实体类,这样研发同学就可以使用了。GameFramework的DataTable模块也是秉持着这种一贯的策略来实现的。 二.DataRow DataRow在excel数据表中,对应的是一行数据,而在代码中对应的其实就是一条数据对象。 接口IData

TxNet 4727

Android 13 灭屏音乐播放问题解决与优化建议

通过在中增加对音乐播放状态的检测,我们成功解决了客户应用在灭屏状态下音乐播放被中断的问题。

m0_60898338的博客 1157

把 ABAP 选择屏幕 Selection Screen 打造成可维护的交互面板:常用屏幕元素与动态控制全解析

本文详细介绍了ABAP报表中Selection Screen的设计技巧,包括空行(SKIP)、横线(ULINE)、注释(COMMENT)等基础元素的使用方法,以及如何通过MODIF ID实现动态界面调整。重点讲解了行内布局(BEGIN OF LINE)、按钮(PUSHBUTTON)和区块(BLOCK)等高级功能,帮助开发者将选择屏幕从"能用"提升到"好用、易扩展、可维护"的水平。文章还分享了项目实践中的命名规范和分组策略,特别适合需要优化ABAP报表用户体验的开发人员

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 333

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

上一篇: 移动云云安防产品架构及其在边缘计算领域的探索
下一篇: 8张图带你了解L2交换机、路由器对包做了什么?
云开发者联盟
博客等级 码龄5年 546粉丝 93原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值