docker容器修改端口和目錄映射的方法步驟
一、容器修改端口映射
一般在運行容器時,我們都會通過參數(shù) -p(使用大寫的-P參數(shù)則會隨機選擇宿主機的一個端口進行映射)來指定宿主機和容器端口的映射,例如
docker run -it -d --name [container-name] -p 8088:80 [image-name]
這里是將容器內(nèi)的80端口映射到宿主機的8088端口
參數(shù)說明
-d 表示后臺運行容器
-t 為docker分配一個偽終端并綁定到容器的標準輸入上
-i 是讓容器的標準輸入保持打開狀態(tài)
-p 指定映射端口
在運行容器時指定映射端口運行后,如果想要添加新的端口映射,可以使用以下兩種方式:
方式一:將現(xiàn)有的容器打包成鏡像,然后在使用新的鏡像運行容器時重新指定要映射的端口
方式二:修改要端口映射的容器的配置文件
查看容器信息:
docker ps -a
查看容器的端口映射情況,在容器外執(zhí)行:
docker port 容器ID 或者 docker port 容器名稱
查找要修改容器的容器Id
docker inspect f244 | grep Id
進到/var/lib/docker/containers 目錄下找到與 Id 相同的目錄,修改 hostconfig.json 和 config.v2.json文件:
若該容器還在運行,先停掉
docker stop 容器ID
停掉docker服務
systemctl stop docker
修改hostconfig.json如下,添加端口綁定"9003/tcp": [{“HostIp”: “”,“HostPort”: “9003”}],表示綁定端口9003
修改config.v2.json在ExposedPorts中加上要暴露的端口,即9003
改完之后保存啟動docker
systemctl start docker
之后可以再次查看添加的端口是否已映射綁定上
附注:
1、將容器打包成鏡像命令:
docker commit -a "king西陽" -m "a new image" [容器名稱或id] [打包的鏡像名稱]:[標簽]
常用OPTIONS說明:
-a :提交的鏡像作者
-c :使用Dockerfile指令來創(chuàng)建鏡像
-m :提交時的說明文字
-p :在commit時,將容器暫停
2、查看宿主機端口是否和容器內(nèi)端口映射成功,在容器外執(zhí)行
netstat -an |grep 宿主機的映射端口
如果有進程存在則表示有映射
二、容器修改目錄映射
問題背景
docker run -d -p 9999:8080 -i --name tomcat7 -v /usr/local/webapps:/usr/local/tomcat/webapps tomcat:7
• 創(chuàng)建容器時,指定了目錄映射(-v)
• 如果容器運行之后發(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)點
簡單粗暴,在測試環(huán)境用的更多
缺點
如果是數(shù)據(jù)庫、服務器相關(guān)的容器,創(chuàng)建新的容器,又得重新配置相關(guān)東西了
修改容器配置文件(重點)
暫停 Docker 服務
systemctl stop docker
進入 Docker 容器配置文件目錄下
cd /var/lib/docker/containers/ ls
進入某個容器的配置文件目錄下
容器ID 就是文件夾名稱,可通過 docker ps -aq 來查看,不過這是縮寫,對照起來看就行
cd c614b6db4aed0c8d0c742baa09ff4e2c24761703586460b68633d7b66e62c633 ls
修改 config.v2.json
vim config.v2.json
輸入 / ,搜索映射的目錄(webapps)
也可以找到 MountPoints
若需要重新指定主機上的映射目錄,則改綠圈的兩個地方
若需要重新指定容器上的映射目錄,則改藍圈的兩個地方
MountPoints 節(jié)點
其實是一個 json 結(jié)構(gòu)的數(shù)據(jù),下圖
重新啟動 Docker 服務
systemctl stop docker docker start tomcat7 cd /usr/local/tomcat/webapps ls
重新映射目錄成功!!
注意
• 如果想修改 Docker 容器隨著 Docker 服務啟動而自啟動,可看:https://www.cnblogs.com/poloyy/p/13985567.html
• 如果想修改 Docker 的映射端口,可看:https://www.cnblogs.com/poloyy/p/13940554.html
• 改 hostconfig.json 并不會成功哦
優(yōu)點
直接操作配置文件沒有副作用,算簡單
缺點
需要暫停 Docker 服務,會影響其他正常運行的 Docker 容器
使用 docker commit 命令
停止 Docker 容器
docker stop tomcat7
使用 commit 構(gòu)建新鏡像
docker commit tomcat7 new_tomcat7 docker images
使用新鏡像重新創(chuàng)建一個 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)點
• 無需停止 Docker 服務,不影響其他正在運行的容器
• 舊容器有的配置和數(shù)據(jù),新容器也會有,不會造成數(shù)據(jù)或配置丟失,對新舊容器都沒有任何影響
缺點
需要生成新的鏡像和容器,管理鏡像和容器的時間成本會上升
總結(jié)
到此這篇關(guān)于docker容器修改端口和目錄映射的文章就介紹到這了,更多相關(guān)docker修改端口和目錄映射內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Linux如何使用Docker部署DashDot訪問本地服務器面板
DashDot是一款簡單、實用的開源現(xiàn)代服務器儀表盤,主要應用于小型?VPS?和私人的服務器(比如說NAS),它是一個界面非常漂亮的監(jiān)控服務器面板,這篇文章給大家介紹Linux使用Docker部署DashDot訪問本地服務器面板的相關(guān)知識,感興趣的朋友跟隨小編一起看看吧2024-04-04Docker容器網(wǎng)絡(luò)基礎(chǔ)概述
這篇文章主要介紹了Docker容器網(wǎng)絡(luò)基礎(chǔ)概述,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-09-09