溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Docker中怎么設(shè)置端口映射

發(fā)布時(shí)間:2021-07-27 14:56:15 來(lái)源:億速云 閱讀:393 作者:Leah 欄目:服務(wù)器

Docker中怎么設(shè)置端口映射,相信很多沒(méi)有經(jīng)驗(yàn)的人對(duì)此束手無(wú)策,為此本文總結(jié)了問(wèn)題出現(xiàn)的原因和解決方法,通過(guò)這篇文章希望你能解決這個(gè)問(wèn)題。

一、概念

Docker 端口映射即映射容器內(nèi)應(yīng)用的服務(wù)端口到本機(jī)宿主機(jī)器。

二、實(shí)現(xiàn)

當(dāng)容器中運(yùn)行一些網(wǎng)絡(luò)應(yīng)用,要讓外部訪問(wèn)這些應(yīng)用時(shí),可以通過(guò) -P 或 -p 參數(shù)兩種方式來(lái)指定端口映射。

1. 隨機(jī)映射

使用 -P 參數(shù)時(shí),Docker 會(huì)隨機(jī)映射一個(gè)端口到內(nèi)部容器開放的網(wǎng)絡(luò)端口,如下開啟一個(gè) nginx 服務(wù):

$ 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 看到,本地主機(jī)的 32769 端口被映射到了容器的 80 端口,這時(shí)我們通過(guò)本機(jī)瀏覽器訪問(wèn) http://localhost:32769 就會(huì)出現(xiàn) nginx 歡迎頁(yè)面。

2. 指定端口

使用 -p 參數(shù)時(shí),可以指定要映射的端口,并且在一個(gè)指定的端口上只可以綁定一個(gè)容器。支持的格式有:

  1. IP:HostPort:ContainerPort

  2. IP:ContainerPort

  3. HostPort:ContainerPort

下面開啟一個(gè) nginx 服務(wù),將本機(jī) 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 看到,本地主機(jī)的 8080 端口被映射到了容器的 80 端口,這時(shí)我們通過(guò)本機(jī)瀏覽器訪問(wèn) http://localhost:8080 就會(huì)出現(xiàn) nginx 歡迎頁(yè)面。

三、查看映射端口

使用 docker port 命令來(lái)查看當(dāng)前映射的端口配置,也可以查看到綁定的地址。命令格式如下:

$ docker port CONTAINER [PRIVATE_PORT[/PROTO]]

容器有自己的內(nèi)部網(wǎng)絡(luò)和 IP 地址,可以使用 docker inspect + 容器ID 獲取容器的具體信息。

DOCKER 給運(yùn)行中的容器添加映射端口

方法1

1、獲得容器IP

將container_name 換成實(shí)際環(huán)境中的容器名

docker inspect `container_name` | grep IPAddress

2、 iptable轉(zhuǎn)發(fā)端口

將容器的8000端口映射到docker主機(jī)的8001端口

復(fù)制代碼 代碼如下:


iptables -t nat -A  DOCKER -p tcp --dport 8001 -j DNAT --to-destination 172.17.0.19:8000

方法2

1.提交一個(gè)運(yùn)行中的容器為鏡像

docker commit containerid foo/live

2.運(yùn)行鏡像并添加端口

docker run -d -p 8000:80 foo/live /bin/bash

看完上述內(nèi)容,你們掌握Docker中怎么設(shè)置端口映射的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI