docker容器在啟動的時候,如果不指定端口映射參數,在容器外部是無法通過網絡來訪問容器內的網絡應用和服務的。
端口映射通過-P和-p參數來實現
一、-P將容器內部開放的網絡端口隨機映射到宿主機的一個端口上;
二、-p指定要映射的端口,一個指定端口上只可以綁定一個容器;支持的格式如下:
①IP:HOSTPORT:CONTAINERPORT:指定ip、指定宿主機port、指定容器port
- 適用於映射到指定地址的指定端口
eg:將容器的5000端口映射到指定地址127.0.0.1的5000端口上:
docker run -it -d -p 127.0.0.1:5000:5000 docker.io/centos:latest /bin/bash

②IP::CONTAINERPORT:指定ip、未指定宿主機port(隨機)、指定容器port
- 適用於映射到指定地址的任意端口
eg:將容器的4000端口映射到127.0.0.1的任意端口上:
docker run -it -d -p 127.0.0.1::4000 docker.io/centos:latest /bin/bash

注:會將容器的ip127.0.0.1和4000端口,隨機映射到宿主機的一個端口上。
③HOSTPORT:CONTAINERPORT :未指定ip、指定宿主機port、指定容器port
- 適用於將容器指定端口指定映射到宿主機的一個端口上(映射所有接口地址)
eg:將容器的80端口映射到宿主機的8000端口上:
docker run -itd -p 8000:80 docker.io/centos:latest /bin/bash

注:上邊的操作默認會綁定本地所有接口上的所有地址。
映射訪問示例

將容器的80端口映射到宿主機的8000端口上,並在容器中安裝httpd服務,而后在宿主機上訪問http://IP:HOSTPORT,即訪問http://192.168.101.222:8000/,結果如下:

查看映射端口配置
命令:
docker port CONTAINER_ID

