很多應用都需要設置端口才能允許外部訪問,docker容器內的應用也需要佔用端口,但是docker容器本身就是一個微型系統它自身的端口與宿主機器是不一樣的,用戶想要訪問容器內的應用時只能通過訪問宿主機器的端口才能訪問容器內的應用。所有為了訪問容器內的應用,需要將宿主機器的端口與容器的端口進行映射。
可以使用-P或者-p參數指定端口映射。
-P
大寫的字母P,Docker會從宿主機器隨機選擇一個端口映射到容器的指定端口。
例如:
$ docker run -d -P training/webapp python app.py
從上面命令執行情況可以看出,本次執行選擇了宿主機器的32769端口映射到容器的5000端口。
可以從瀏覽器訪問一下32769端口:
-p
一般來說我們都希望使用一個固定的端口號來訪問應用,此時可以使用小寫的字母p來指定端口映射。
用法:
-p 宿主端口:容器端口
同樣以上面應用為例,新的命令如下:
$ docker run -d -p 12345:5000 training/webapp python app.py
此時映射的主機端口是12345。
從瀏覽器訪問一下12345端口:
效果是一樣的,說明端口映射成功。
多端口映射
有時我們的一個容器中可能會運行多個網絡服務,或者一個網絡服務需要佔用多個端口,比如同時支持http和https。此時可以通過多次使用-p標籤來映射多個端口。
語法如下:
$ docker run -d -p 12345:5000 -p 55555:80 training/webapp python app.py
帶IP地址的端口映射
端口映射時還可以指定主機IP地址,格式如下:
-p ip:主機端口:容器端口
-p ip::容器端口
示例:
-p 127.0.0.1:12345:5000
-p 127.0.0.1::5000
查看容器端口映射
命令:
$ docker port 容器ID
$ docker port 容器ID 容器端口
閱讀更多 開發小菜鳥 的文章