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规则进行端口映射

相关推荐
Gss7779 小时前
Docker 公有仓库使用、Docker 私有仓库(Registry)使用总结
docker·容器
暴富奥利奥9 小时前
完成docker方式的ros环境配置
linux·学习·docker·容器
ManageEngineITSM10 小时前
IT 服务自动化的时代:让效率与体验共进
运维·数据库·人工智能·自动化·itsm·工单系统
QotomPC10 小时前
软件定义的理想硬件平台:Qotom Q30900SE/UE系列在AIO服务器与边缘网关中的实践
运维·服务器
捷智算云服务10 小时前
H200服务器维修服务体系构建:捷智算的全链条保障方案
运维·服务器
hweiyu0010 小时前
Linux 命令:mount
linux·运维·服务器
红尘客栈211 小时前
K8S基本命令操作
linux·容器·kubernetes
我好饿111 小时前
部署k8s集群+containerd+dashboard
云原生·容器·kubernetes
hello_25011 小时前
动手模拟k8s网络-vxlan模式
网络·容器·kubernetes
海海思思11 小时前
解决Docker "exec format error":架构不匹配问题分析
docker·容器