您好,登錄后才能下訂單哦!
Docker中怎么設置端口映射,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。
一、概念
Docker 端口映射即映射容器內應用的服務端口到本機宿主機器。
二、實現
當容器中運行一些網絡應用,要讓外部訪問這些應用時,可以通過 -P 或 -p 參數兩種方式來指定端口映射。
1. 隨機映射
使用 -P 參數時,Docker 會隨機映射一個端口到內部容器開放的網絡端口,如下開啟一個 nginx 服務:
$ docker run -d -P nginx e93349d539119dc48dc841e117f6388d6afa6a6065b75a5b4aedaf5fb2a051fc $ $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES e93349d53911 nginx "nginx -g 'daemon ..." 11 seconds ago Up 9 seconds 0.0.0.0:32769->80/tcp zen_kirch
使用 docker ps 看到,本地主機的 32769 端口被映射到了容器的 80 端口,這時我們通過本機瀏覽器訪問 http://localhost:32769 就會出現 nginx 歡迎頁面。
2. 指定端口
使用 -p 參數時,可以指定要映射的端口,并且在一個指定的端口上只可以綁定一個容器。支持的格式有:
IP:HostPort:ContainerPort
IP:ContainerPort
HostPort:ContainerPort
下面開啟一個 nginx 服務,將本機 8080 端口映射到容器的 80 端口:
$ docker run -d -p 8080:80 nginx 23e725098712d061a1382f33d6fe54da23ae37597a62f8debdd3731b5f9cc4b9 $ $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 23e725098712 nginx "nginx -g 'daemon ..." 8 seconds ago Up 6 seconds 0.0.0.0:8080->80/tcp frosty_ptolemy
使用 docker ps 看到,本地主機的 8080 端口被映射到了容器的 80 端口,這時我們通過本機瀏覽器訪問 http://localhost:8080 就會出現 nginx 歡迎頁面。
三、查看映射端口
使用 docker port 命令來查看當前映射的端口配置,也可以查看到綁定的地址。命令格式如下:
$ docker port CONTAINER [PRIVATE_PORT[/PROTO]]
容器有自己的內部網絡和 IP 地址,可以使用 docker inspect + 容器ID 獲取容器的具體信息。
DOCKER 給運行中的容器添加映射端口
方法1
1、獲得容器IP
將container_name 換成實際環境中的容器名
docker inspect `container_name` | grep IPAddress
2、 iptable轉發端口
將容器的8000端口映射到docker主機的8001端口
復制代碼 代碼如下:
iptables -t nat -A DOCKER -p tcp --dport 8001 -j DNAT --to-destination 172.17.0.19:8000
方法2
1.提交一個運行中的容器為鏡像
docker commit containerid foo/live
2.運行鏡像并添加端口
docker run -d -p 8000:80 foo/live /bin/bash
看完上述內容,你們掌握Docker中怎么設置端口映射的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。