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

相关推荐
diablobaal1 小时前
云计算学习100天-第28天
运维·服务器·学习
wuyang-ligerj1 小时前
BGP路由协议(一):基本概念
运维·网络·网络协议·智能路由器
辉辉健身中2 小时前
docker和k8s的区别
docker·容器·kubernetes
2401_831501733 小时前
Linux之Docker虚拟化技术(一)
java·linux·docker
阳光阴郁大boy3 小时前
前端实现Linux查询平台:打造高效运维工作流
linux·运维·服务器
像素之间3 小时前
nginx的诞生背景、核心优势、与 Apache 的对比
运维·学习·nginx
卓码软件测评3 小时前
【第三方网站运行环境测试:服务器配置(如Nginx/Apache)的WEB安全测试重点】
运维·服务器·前端·网络协议·nginx·web安全·apache
Json_3 小时前
使用Docker部署ZLMediaKit流媒体服务器实现gb/t28181协议的设备
服务器·docker·容器
郝同学的测开笔记4 小时前
打通回家之路:OpenVPN与iptables的完美协作(二)
运维·测试