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

相关推荐
mzhan0178 分钟前
[Linux] vdso 32bit vs 64bit
linux·运维·服务器
忧郁的橙子.12 分钟前
26期_01_Pyhton linux基本命令
linux·运维·服务器
西京刀客18 分钟前
macOS 打出来的 tar 包,Linux 常见告警(tar 包里带了 macOS 的扩展属性(xattr))
linux·运维·macos
LCG米38 分钟前
基于PyTorch的TCN-GRU电力负荷预测:从多维数据预处理到Docker云端部署
pytorch·docker·gru
我送炭你添花2 小时前
开源TR-069 ACS(自动配置服务器)GenieACS 的四个主要模块详细介绍
运维·服务器·开源
Warren982 小时前
接口测试理论
docker·面试·职场和发展·eureka·ansible
杭州杭州杭州2 小时前
Docker
运维·docker·容器
开开心心_Every2 小时前
Win10/Win11版本一键切换工具
linux·运维·服务器·edge·pdf·web3·共识算法
啟明起鸣3 小时前
【Nginx 网关开发】从源码分析 Nginx 的多进程启动原理
运维·nginx
一体化运维管理平台3 小时前
容器监控难题破解:美信监控易全面支持K8s、Docker
云原生·容器·kubernetes