Docker的端口映射

📅 2026/7/29 4:43:54 👁️ 阅读次数 📝 编程学习
Docker的端口映射

1.端口映射的本质

端口映射是指通过Docker 守护进程在宿主机(Host)的网络协议栈上建立访问控制列表(ACL)网络地址转换(NAT)规则,将发往宿主机特定 IP 地址及端口(L4 Socket)的网络流量,透明地路由、转发并伪装(Masquerade)至容器隔离网络命名空间(Network Namespace)内指定端口的通信机制。简单地说就是在宿主机(你的电脑/虚拟机)的“大门”上凿个洞,从外面访问这个洞(端口)的人,会被 Docker 悄悄领到容器那个“小黑屋”里对应的服务上。

2.三种端口映射的方法

2.1 随机分配端口

#-p 80 只指定了容器内部的端口(80),但没有指定宿主机端口。 docker run -d --name nginx-test -p 80 nginx:latest

对于未指定宿主机端口,docker会从默认的临时端口范围(32768-60999)中自动分配一个未被占用的端口,映射到容器的 80 端口。

按上图来说就是宿主机的32768端口被映射到容器的80端口,在用户访问32768端口时,docker把目标地址转成容器的80端口,让容器里的nginx一直认为用户是在访问自己的80端口。

2.2指定宿主机端口

#指定将容器的80端口映射到宿主机的8080端口 docker run -d --name nginx-test -p 80:8080 nginx:latest

2.3绑定宿主机指定IP

docker run -d --name nginx-demo -p 127.0.0.1:8080:80 nginx:latest