docker容器修改端口和目錄映射的方法步驟
一、容器修改端口映射
一般在運(yùn)行容器時(shí),我們都會(huì)通過參數(shù) -p(使用大寫的-P參數(shù)則會(huì)隨機(jī)選擇宿主機(jī)的一個(gè)端口進(jìn)行映射)來(lái)指定宿主機(jī)和容器端口的映射,例如
docker run -it -d --name [container-name] -p 8088:80 [image-name]
這里是將容器內(nèi)的80端口映射到宿主機(jī)的8088端口
參數(shù)說明
-d 表示后臺(tái)運(yùn)行容器
-t 為docker分配一個(gè)偽終端并綁定到容器的標(biāo)準(zhǔn)輸入上
-i 是讓容器的標(biāo)準(zhǔn)輸入保持打開狀態(tài)
-p 指定映射端口
在運(yùn)行容器時(shí)指定映射端口運(yùn)行后,如果想要添加新的端口映射,可以使用以下兩種方式:
方式一:將現(xiàn)有的容器打包成鏡像,然后在使用新的鏡像運(yùn)行容器時(shí)重新指定要映射的端口
方式二:修改要端口映射的容器的配置文件
查看容器信息:
docker ps -a
查看容器的端口映射情況,在容器外執(zhí)行:
docker port 容器ID 或者 docker port 容器名稱
查找要修改容器的容器Id
docker inspect f244 | grep Id

進(jìn)到/var/lib/docker/containers 目錄下找到與 Id 相同的目錄,修改 hostconfig.json 和 config.v2.json文件:

若該容器還在運(yùn)行,先停掉
docker stop 容器ID
停掉docker服務(wù)
systemctl stop docker

修改hostconfig.json如下,添加端口綁定"9003/tcp": [{“HostIp”: “”,“HostPort”: “9003”}],表示綁定端口9003

修改config.v2.json在ExposedPorts中加上要暴露的端口,即9003

改完之后保存啟動(dòng)docker
systemctl start docker
之后可以再次查看添加的端口是否已映射綁定上
附注:
1、將容器打包成鏡像命令:
docker commit -a "king西陽(yáng)" -m "a new image" [容器名稱或id] [打包的鏡像名稱]:[標(biāo)簽]
常用OPTIONS說明:
-a :提交的鏡像作者
-c :使用Dockerfile指令來(lái)創(chuàng)建鏡像
-m :提交時(shí)的說明文字
-p :在commit時(shí),將容器暫停
2、查看宿主機(jī)端口是否和容器內(nèi)端口映射成功,在容器外執(zhí)行
netstat -an |grep 宿主機(jī)的映射端口
如果有進(jìn)程存在則表示有映射
二、容器修改目錄映射
問題背景
docker run -d -p 9999:8080 -i --name tomcat7 -v /usr/local/webapps:/usr/local/tomcat/webapps tomcat:7
• 創(chuàng)建容器時(shí),指定了目錄映射(-v)
• 如果容器運(yùn)行之后發(fā)現(xiàn)目錄映射需要改怎么辦?
刪除原有容器,重新創(chuàng)建新的容器
刪除容器
docker rm -f 容器ID/名字
重新創(chuàng)建容器
docker run -d -p 9999:8080 -i --name tomcat7 -v /usr/local/tomcat/webapps:/usr/local/tomcat/webapps tomcat:7
重新指定需要映射的目錄
優(yōu)點(diǎn)
簡(jiǎn)單粗暴,在測(cè)試環(huán)境用的更多
缺點(diǎn)
如果是數(shù)據(jù)庫(kù)、服務(wù)器相關(guān)的容器,創(chuàng)建新的容器,又得重新配置相關(guān)東西了
修改容器配置文件(重點(diǎn))
暫停 Docker 服務(wù)
systemctl stop docker
進(jìn)入 Docker 容器配置文件目錄下
cd /var/lib/docker/containers/ ls

進(jìn)入某個(gè)容器的配置文件目錄下
容器ID 就是文件夾名稱,可通過 docker ps -aq 來(lái)查看,不過這是縮寫,對(duì)照起來(lái)看就行
cd c614b6db4aed0c8d0c742baa09ff4e2c24761703586460b68633d7b66e62c633 ls

修改 config.v2.json
vim config.v2.json

輸入 / ,搜索映射的目錄(webapps)
也可以找到 MountPoints
若需要重新指定主機(jī)上的映射目錄,則改綠圈的兩個(gè)地方
若需要重新指定容器上的映射目錄,則改藍(lán)圈的兩個(gè)地方
MountPoints 節(jié)點(diǎn)
其實(shí)是一個(gè) json 結(jié)構(gòu)的數(shù)據(jù),下圖

重新啟動(dòng) Docker 服務(wù)
systemctl stop docker docker start tomcat7 cd /usr/local/tomcat/webapps ls

重新映射目錄成功??!
注意
• 如果想修改 Docker 容器隨著 Docker 服務(wù)啟動(dòng)而自啟動(dòng),可看:https://www.cnblogs.com/poloyy/p/13985567.html
• 如果想修改 Docker 的映射端口,可看:https://www.cnblogs.com/poloyy/p/13940554.html
• 改 hostconfig.json 并不會(huì)成功哦
優(yōu)點(diǎn)
直接操作配置文件沒有副作用,算簡(jiǎn)單
缺點(diǎn)
需要暫停 Docker 服務(wù),會(huì)影響其他正常運(yùn)行的 Docker 容器
使用 docker commit 命令
停止 Docker 容器
docker stop tomcat7
使用 commit 構(gòu)建新鏡像
docker commit tomcat7 new_tomcat7 docker images

使用新鏡像重新創(chuàng)建一個(gè) Docker 容器
docker run -d -p 9999:8080 -i --name tomcat77 -v /usr/local/tomcat/webapps:/usr/local/tomcat/webapps tomcat:7
修改新容器的名字
如果新容器想用回舊容器的名字,需要先刪了舊容器,再改名
docker rm -f tomcat7 docker rename tomcat77 tomcat7 docker ps

優(yōu)點(diǎn)
• 無(wú)需停止 Docker 服務(wù),不影響其他正在運(yùn)行的容器
• 舊容器有的配置和數(shù)據(jù),新容器也會(huì)有,不會(huì)造成數(shù)據(jù)或配置丟失,對(duì)新舊容器都沒有任何影響
缺點(diǎn)
需要生成新的鏡像和容器,管理鏡像和容器的時(shí)間成本會(huì)上升
總結(jié)
到此這篇關(guān)于docker容器修改端口和目錄映射的文章就介紹到這了,更多相關(guān)docker修改端口和目錄映射內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Docker中鏡像構(gòu)建與緩存優(yōu)化實(shí)戰(zhàn)指南
在實(shí)際項(xiàng)目中,我們需要一套完善的鏡像構(gòu)建與緩存優(yōu)化方案,以提升構(gòu)建速度,降低帶寬與存儲(chǔ)成本,保證構(gòu)建穩(wěn)定性,下面我們就來(lái)看看具體實(shí)現(xiàn)方法吧2025-07-07
關(guān)于dockerfile build過程中報(bào)/bin/sh: pip: command not found的解決方法
這篇文章主要介紹了關(guān)于dockerfile build過程中報(bào)/bin/sh: pip: command not found的解決方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03
docker搭建odoo16開發(fā)環(huán)境的實(shí)現(xiàn)
Odoo是全球流行的開源企業(yè)管理套件,本文主要介紹了docker搭建odoo16開發(fā)環(huán)境的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下2024-04-04
Ubuntu安裝Docker超詳細(xì)小白教程(附國(guó)內(nèi)鏡像加速教程)
由于業(yè)務(wù)需要,又親自上手在服務(wù)器上安裝了Docker,所以這里再給大家總結(jié)下,這篇文章主要介紹了Ubuntu安裝Docker的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2026-04-04
Docker如何同時(shí)啟動(dòng)多個(gè)服務(wù)
這篇文章主要為大家詳細(xì)介紹了Docker如何同時(shí)啟動(dòng)多個(gè)服務(wù),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-10-10
Docker 部署單機(jī)版 Pulsar 和集群架構(gòu) Redis(開發(fā)神器)的方法
這篇文章主要介紹了Docker 部署單機(jī)版 Pulsar 和集群架構(gòu) Redis(開發(fā)神器)的相關(guān)知識(shí),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-10-10
創(chuàng)建支持SSH服務(wù)的Docker鏡像的方法
這篇文章主要介紹了創(chuàng)建支持SSH服務(wù)的Docker鏡像的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧2018-08-08

