Docker 給運行中的容器設置端口映射的方法


一、概念

Docker 端口映射即映射容器內應用的服務端口到本機宿主機器。

二、實現

當容器中運行一些網絡應用,要讓外部訪問這些應用時,可以通過 -P 或 -p 參數兩種方式來指定端口映射。

1. 隨機映射

使用 -P 參數時,Docker 會隨機映射一個端口到內部容器開放的網絡端口,如下開啟一個 nginx 服務:

1
2
3
4
5
6
$ 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 參數時,可以指定要映射的端口,並且在一個指定的端口上只可以綁定一個容器。支持的格式有:

  1. IP:HostPort:ContainerPort
  2. IP:ContainerPort
  3. HostPort:ContainerPort

下面開啟一個 nginx 服務,將本機 8080 端口映射到容器的 80 端口:

1
2
3
4
5
6
$ 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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM