Docker的端口映射问题(庖丁解牛)

1.docker使用-p参数映射端口(宿主机端口:容器端口)

那么问题来了,他是怎么转发到容器的端口的呢?

这里就要说到iptables的四表五链了,先说说这个四表五链是啥

2.四表五链总览

表 (Table) 功能描述 核心操作 生效的链 (Chains) 优先级顺序
raw 用于数据包状态跟踪的豁免 NOTRACK PREROUTING, OUTPUT 1 (最高)
mangle 修改数据包元数据(如 TTL, TOS, MARK) TTL, TOS, MARK 全部五链 PREROUTING, INPUT, FORWARD, OUTPUT, POSTROUTING 2
nat (Network Address Translation) 网络地址转换(端口转发、IP伪装) SNAT, MASQUERADE, DNAT, REDIRECT PREROUTING, INPUT, OUTPUT, POSTROUTING 3
filter 过滤数据包(防火墙核心功能) ACEPT, DROP, REJECTC INPUT, FORWARD, OUTPUT 4 (最低)

3.五链数据包流向图

链 (Chain) 触发时机 主要用途 常用的表
PREROUTING 数据包刚进入网卡尚未进行路由判断之前 目标地址转换 (DNAT) (端口转发、负载均衡) raw, mangle, nat
INPUT 经路由判断后,数据包的目标地址是本机 处理发往本机的数据包 (主机防火墙关键) mangle, filter
FORWARD 经路由判断后,数据包的目标地址是其他地址(本机负责转发) 处理流经本机的数据包 (网络防火墙关键) mangle, filter
OUTPUT 本机进程产生的数据包,在发出之前 处理本机产生的出站数据包 raw, mangle, nat, filter
POSTROUTING 数据包即将离开网卡之前,所有路由判断已完成 源地址转换 (SNAT) (IP伪装、共享上网) mangle, nat

4.直接实战

这里主要用到了nat表的dnat规则进行端口映射

相关推荐
Joy T18 分钟前
【AI运维】03 Nginx 配置与内网转发:从访问链路到 proxy_pass 的完整理解【深度好文】
运维·nginx
竹杖芒鞋轻胜马,谁怕?一蓑烟雨任平生。1 小时前
Docker部署Fio磁盘读写测试
运维·docker·容器
北极之熊熊2 小时前
海量数据库安装及常用命令
linux·运维·数据库
Macbethad2 小时前
技术方案:基于 TwinCAT 3 的半导体设备气路控制系统设计
java·运维·数据库
zhengfei6113 小时前
开源攻击面管理平台 (ASM) | 自动化资产发现与漏洞扫描系统
运维·开源·自动化
用户91743965393 小时前
Magnitude:强!一款基于 Al 视觉的 Web 自动化框架
运维·前端·自动化
航Hang*3 小时前
第六章:网络系统建设与运维(高级)—— STP生成树协议
运维·服务器·网络·笔记·ensp
最贪吃的虎4 小时前
Java基础之泛型
java·运维·jvm·分布式·后端
2501_946675644 小时前
Flutter与OpenHarmony打卡动画效果组件
运维·nginx·flutter
softshow10264 小时前
三菱模拟器通信说明
运维