Docker 給運(yùn)行中的容器設(shè)置端口映射的方法
一、概念
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è)容器。支持的格式有:
- IP:HostPort:ContainerPort
- IP:ContainerPort
- 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端口
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
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
docker run啟動(dòng)的容器掛掉了數(shù)據(jù)怎么辦
這篇文章主要介紹了docker run啟動(dòng)的容器掛掉了,數(shù)據(jù)怎么辦,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-09-09
docker部署釘釘機(jī)器人報(bào)警通知的實(shí)現(xiàn)
本文主要介紹了docker部署釘釘機(jī)器人報(bào)警通知的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-05-05
解決docker run時(shí)候啟動(dòng)兩個(gè)占有不同端口的問(wèn)題
這篇文章主要介紹了解決docker run時(shí)候啟動(dòng)兩個(gè)占有不同端口的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-11-11
Mac上使用Docker如何快速啟動(dòng)MySQL測(cè)試
本文主要討論如何使用Docker快速啟動(dòng) MySQL 測(cè)試,包括Mac環(huán)境。非常不錯(cuò),具有參考借鑒價(jià)值,感興趣的朋友一起看看吧2016-10-10
Docker中使用Nginx代理多個(gè)應(yīng)用站點(diǎn)的方法
這篇文章主要介紹了Docker中使用Nginx代理多個(gè)應(yīng)用站點(diǎn)的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12
docker安裝并運(yùn)行rabbitmq的實(shí)例代碼
在本篇文章里小編給大家整理了關(guān)于docker安裝并運(yùn)行rabbitmq的實(shí)例代碼以及相關(guān)知識(shí)點(diǎn),需要的朋友們學(xué)習(xí)下。2019-10-10
docker容器增加端口映射全過(guò)程(修改配置文件方式)
文章詳細(xì)描述了如何通過(guò)修改Docker容器的配置文件來(lái)增加端口映射,以解決已經(jīng)運(yùn)行的容器需要增加端口映射的問(wèn)題,以MySQL容器為例進(jìn)行了具體操作步驟的說(shuō)明2024-11-11
Docker buildx構(gòu)建多平臺(tái)鏡像并推送到私有倉(cāng)庫(kù)的方法
這篇文章主要介紹了Docker buildx構(gòu)建多平臺(tái)鏡像并推送到私有倉(cāng)庫(kù),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01

