Docker端口映射是將Docker容器內部的端口映射到主機的端口上,使得可以通過主機的IP地址和端口訪問容器內的服務。
Docker使用Linux的網絡命名空間來實現端口映射。在Linux中,每個容器都有自己的網絡命名空間,包括獨立的IP地址和端口空間。當啟動一個容器時,Docker會為容器創建一個虛擬網絡接口,該接口綁定到容器的網絡命名空間。
在端口映射中,Docker將容器內的端口和主機的端口進行綁定。當容器內有服務監聽某個端口時,Docker會將主機上的某個端口轉發到容器內的對應端口。這樣,當主機收到來自外部的請求時,就會將請求轉發到容器內部的服務上。
具體地,Docker通過iptables工具來實現端口映射。當容器啟動時,Docker會在主機上創建一個iptables規則,該規則會將主機的某個端口轉發到容器內的對應端口。這樣,所有請求發送到主機上的指定端口時,iptables會將請求轉發到容器內部。
總結起來,Docker端口映射的原理是通過創建iptables規則,將主機的端口和容器內的端口進行綁定,實現對外服務的訪問。