docker容器添加對外映射端口的實現(xiàn)
首次啟動容器指定映射端口
在容器首次啟動是,可通過-p參數(shù)(-P參數(shù)則會隨機(jī)選擇宿主機(jī)的一個端口進(jìn)行映射)來指定宿主機(jī)和容器端口的映射,例如:
docker run -it -d --name [container-name] -p 8088:80 [image-name]
上述命令將容器內(nèi)的80端口映射到宿主機(jī)的8088端口。
參數(shù)說明
- -d 表示后臺運行容器
- -t 為docker分配一個偽終端并綁定到容器的標(biāo)準(zhǔn)輸入上
- -i 是讓容器的標(biāo)準(zhǔn)輸入保持打開狀態(tài)
- -p 指定映射端口
新增映射端口
當(dāng)容器已經(jīng)運行之后,且容器中已經(jīng)有配置改動,不方便重新創(chuàng)建逐一修改配置時,則可通過兩種方式新增端口映射。
方式一:打包新鏡像
如果正在運行的容器已經(jīng)修改了很多配置,重新創(chuàng)建鏡像,修改配置比較麻煩時,可在現(xiàn)有的容器基礎(chǔ)上打包一個鏡像。
然后在運行新鏡像時進(jìn)行端口映射的新增或修改。
基本步驟:
停止指定容器:
docker stop container-name
將容器commit成為一個鏡像:
docker commit -m "New image with my changes" my-container my-new-image
提交時可以添加一些說明信息,比如使用 -m 選項后面跟的字符串。
需要注意的是,容器在提交之前需要先停止。如果容器正在運行,則提交操作將失敗。此外,提交的容器必須是基于一個基礎(chǔ)鏡像構(gòu)建的,否則提交操作也將失敗。
用新鏡像運行容器:
docker run -it -d --name container-name -p p1:p1 -p p2:p2 new-image-name
至此,原有容器內(nèi)配置不變,在啟動時進(jìn)行了新的端口映射。
方式二:修改配置文件
修改配置文件,此種方式稍微有些麻煩,而且在操作過程中需要把的docker服務(wù)停掉,使用時需注意。
查看容器信息:
docker ps -a
查看容器的端口映射情況,在容器外執(zhí)行:
docker port d5104ec757b6 # 或 docker port nginx
查找要修改容器的容器Id:
docker inspect d5104ec757b6 |grep Id
執(zhí)行命令結(jié)果:
"Id": "d5104ec757b667d5647c61c9d6066fc9b7b3a675eaba6af4dc990989f78e99b7",
不同的容器Id不同,然后在/var/lib/docker/containers目錄下找到與上述Id相同的目錄,修改該目錄下的 hostconfig.json 和 config.v2.json文件。
在修改之前,還需要停到容器和docker服務(wù)。
停掉容器:
docker stop d5104ec757b6
停掉docker服務(wù):
systemctl stop docker
修改hostconfig.json,添加端口綁定"443/tcp": [{“HostIp”: “”,“HostPort”: “443”}],表示綁定端口443:
"PortBindings":{ "443/tcp":[{"HostIp":"","HostPort":"443"}], "80/tcp":[{"HostIp":"","HostPort":"80"}] }
找到key為PortBindings的配置,在其value部分中新增了443相關(guān)的配置。
修改config.v2.json文件,在ExposedPorts中加上要暴露的端口,即443:
"ExposedPorts":{"443/tcp":{},"80/tcp":{}}
找到key為ExposedPorts的配置,在其value部分新增443的配置。
保持配置文件,重啟docker服務(wù)和容器:
systemctl start docker docker start d5104ec757b6
此時,再用前面提到的docker port命令即可看到新增的端口已經(jīng)綁定成功。
到此這篇關(guān)于docker容器添加對外映射端口的實現(xiàn)的文章就介紹到這了,更多相關(guān)docker 添加對外映射端口內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
docker靈活的構(gòu)建PHP環(huán)境的實現(xiàn)
這篇文章主要介紹了docker靈活的構(gòu)建PHP環(huán)境的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12Docker如何訪問到宿主機(jī)MYSQL的實現(xiàn)方法
使用?Docker?能實現(xiàn)服務(wù)的容器化,并使用容器間網(wǎng)絡(luò)在它們之間進(jìn)行通信,本文主要介紹了Docker如何訪問到宿主機(jī)MYSQL的實現(xiàn)方法,感興趣的可以了解一下,感興趣的可以了解一下2023-09-09docker容器狀態(tài)轉(zhuǎn)換管理命令實例詳解
Docker容器只是一個運行于宿主操作系統(tǒng)host?OS上的應(yīng)用進(jìn)程,所以你需要一個鏡像來運行它,Docker鏡像以進(jìn)程的方式運行時就叫做Docker容器,這篇文章主要給大家介紹了關(guān)于docker容器狀態(tài)轉(zhuǎn)換管理命令的相關(guān)資料,需要的朋友可以參考下2022-05-05Docker部署UI自動化測試環(huán)境的實現(xiàn)步驟
本文主要介紹了Docker部署UI自動化測試環(huán)境的實現(xiàn)步驟,通過Docker可以快速創(chuàng)建、部署和測試腳本,提高測試效率,具有一定的參考價值,感興趣的可以了解一下2023-08-08聊聊kubernetes1.20用containerd替換docker(shim)的問題
這篇文章主要介紹了kubernetes1.20用containerd替換docker(shim),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-03-03