0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

居然能修改已運(yùn)行的Docker容器端口映射?

dyquk4xk2p3d ? 來(lái)源:良許Linux ? 2023-03-20 09:25 ? 次閱讀

		

		

容器未啟動(dòng)?

如果你的容器還沒有構(gòu)建時(shí),想添加端口映射時(shí),你只需要在創(chuàng)建容器的時(shí)候添加 -p 參數(shù),想添加幾個(gè)端口映射就追加幾個(gè) -p 參數(shù)。類似于如下示例:

dockerrun--nameapi_dfo_hyperf_ws
-v/Users/pudongping/glory/codes/dfo/api_dfo_hyperf:/api_dfo_hyperf
-p9502:9502
-p9503:9503
-p9504:9504
-p9505:9505-it
--entrypoint/bin/sh
alex/alex_api_dfo:v1.0

容器已啟動(dòng)?

但是想修改或者添加端口時(shí),先停止掉正在運(yùn)行的容器。

以下內(nèi)容都是以容器 id 為 cbe26510c276 進(jìn)行操作的,請(qǐng)務(wù)必將容器 id 換成你自己需要修改的容器 id。

dockerstop{容器的名稱或者id}

比如:

dockerstopcbe26510c276

查看容器完整的 hash_of_the_container 數(shù)值:

dockerinspect{容器的名稱或者id}|grepId

#比如:
dockerinspectcbe26510c276|grepId
#會(huì)得到如下結(jié)果:
#"Id":"cbe26510c276fa9a4487a8c2af8cbb49410f2a5305149d2b26eb8ce37c777d00"

打開 hostconfig.json 配置文件

vim/var/lib/docker/containers/{hash_of_the_container}/hostconfig.json

比如:

vim/var/lib/docker/containers/cbe26510c276fa9a4487a8c2af8cbb49410f2a5305149d2b26eb8ce37c777d00/hostconfig.json

如果你不想先查看完整的容器 hash_of_the_container 數(shù)值,你也可以直接先切換到當(dāng)前容器相關(guān)目錄中 cd /var/lib/docker/containers/{hash_of_the_container}* , 然后再去編輯 hostconfig.json 配置文件。

cd/var/lib/docker/containers/{hash_of_the_container}*

比如

cd/var/lib/docker/containers/cbe26510c276*

然后再去編輯 hostconfig.json 配置文件:

vimhostconfig.json

修改 hostconfig.json 配置文件

在 hostconfig.json 配置文件中,找到 "PortBindings":{} 這個(gè)配置項(xiàng),然后進(jìn)行修改。我這里添加了兩個(gè)端口映射,分別將宿主機(jī)的 8502 端口以及 8505 端口映射到容器的 8502 端口和 8505 端口。

HostPort 對(duì)應(yīng)的端口代表 宿主機(jī) 的端口。

建議容器使用什么端口,宿主機(jī)就映射什么端口,方便以后管理。當(dāng)然,具體情況,具體分析。

{
"PortBindings":{
"8502/tcp":[
{
"HostIp":"",
"HostPort":"8502"
}
],
"8505/tcp":[
{
"HostIp":"",
"HostPort":"8505"
}
]
}
}

如果 config.v2.json 配置文件或者 config.json 配置文件中也記錄了端口,也需要進(jìn)行修改,如果沒有,就不需要改。

只需要修改 "ExposedPorts": {} 相關(guān)之處。

{
"Args":[],
"Config":{
"ExposedPorts":{
"8502/tcp":{},
"8505/tcp":{}
},
"Entrypoint":[
"/bin/sh"
]
}
}

最后重啟 docker,然后查看容器相關(guān)配置信息是否已經(jīng)修改完畢

#重啟docker
servicedockerrestart
#或者
systemctlrestartdocker

查看容器相關(guān)配置信息:

dockerinspect{容器的名稱或者id}
#比如:
dockerinspectcbe26510c276

配置符合你的要求后,再次啟動(dòng)容器:

dockerstart{容器的名稱或者id}
#比如:
dockerstartcbe26510c276

Docker Desktop for Mac

How to login the VM of Docker Desktop for Mac

因?yàn)樵?Docker for MacOS 中,容器的宿主機(jī)并不是 MacOS 本身,而是在 MacOS 中運(yùn)行的一個(gè) VM 虛擬機(jī) 。虛擬機(jī)的路徑可以通過(guò)查看 Docker Desktop 的配置界面 Disk image location 配置獲得。

那么我們?nèi)绾芜M(jìn)入這個(gè)虛擬機(jī)呢?

最簡(jiǎn)單的方式是采用 justincormack/nsenter1 進(jìn)入,這個(gè)鏡像只有 101KB,已經(jīng)非常小了。

dockerrun-it--rm--privileged--pid=hostjustincormack/nsenter1
  • –rm 表示在退出的時(shí)候就自動(dòng)刪除該容器;
  • –privileged 表示允許該容器訪問(wèn)宿主機(jī)(也就是我們想要登錄的 VM )中的各種設(shè)備;
  • –pid=host 表示允許容器共享宿主機(jī)的進(jìn)程命名空間(namespace),或者通俗點(diǎn)兒解釋就是允許容器看到宿主機(jī)中的各種進(jìn)程;

然后再進(jìn)入 /var/lib/docker/containers 目錄修改 config.v2.json 配置文件和 hostconfig.json 配置文件即可。整體來(lái)說(shuō),在 MacOS 上除了進(jìn)入 /var/lib/docker/containers 目錄時(shí),進(jìn)入方式有所不同以外,修改配置文件方式和上文一樣。需要注意的是,修改的時(shí)候請(qǐng)使用 vi 編輯器,因?yàn)檫@個(gè)鏡像沒有安裝 vim 編輯器的。

比如:

vi/var/lib/docker/containers/a7377587b9f08cfe87af9a8ffa4da0f90bf07fb0a1cd6833a5ffcd9c37b842d0/config.v2.json

vi/var/lib/docker/containers/a7377587b9f08cfe87af9a8ffa4da0f90bf07fb0a1cd6833a5ffcd9c37b842d0/ho

審核編輯 :李倩



聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 端口
    +關(guān)注

    關(guān)注

    4

    文章

    916

    瀏覽量

    31862
  • 容器
    +關(guān)注

    關(guān)注

    0

    文章

    490

    瀏覽量

    21986
  • Docker
    +關(guān)注

    關(guān)注

    0

    文章

    446

    瀏覽量

    11738

原文標(biāo)題:騷操作!居然能修改已運(yùn)行的 Docker 容器端口映射?

文章出處:【微信號(hào):良許Linux,微信公眾號(hào):良許Linux】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    ARM平臺(tái)實(shí)現(xiàn)Docker容器技術(shù)

    /home/tronlong/docker/myregistry:/var/lib/registry registry:2 參數(shù)說(shuō)明: -d:后臺(tái)啟動(dòng)容器。 -p:將容器的5000端口映射
    發(fā)表于 07-17 11:05

    ARM平臺(tái)實(shí)現(xiàn)Docker容器技術(shù)

    容器的5000端口映射至Ubuntu的5000端口(5000是registry服務(wù)端口)。 -v:將容器"/var/lib/reg
    發(fā)表于 07-25 14:36

    [分享]免費(fèi)小軟件——天銳端口映射器V1.0

    軟件名稱:天銳端口映射器軟件版本:V1.0軟件大?。?2kB下載:天銳端口映射器.rar 軟件介紹:本軟件是綠色軟件,實(shí)現(xiàn)TCP/IP端口重定向。通過(guò)在服務(wù)器安裝運(yùn)行此程序,可以把內(nèi)網(wǎng)
    發(fā)表于 08-12 17:06

    TCP通信利用花生殼軟件將內(nèi)網(wǎng)端口映射到外網(wǎng)

    里用修改路由器參數(shù)實(shí)現(xiàn)過(guò)。無(wú)奈現(xiàn)在在公司進(jìn)不去路由器啊。突然發(fā)現(xiàn)花生殼里有個(gè)端口映射功能,還比較好用?,F(xiàn)在分享給大家,希望對(duì)需要進(jìn)行遠(yuǎn)程訪問(wèn)做測(cè)試的同學(xué)提供一點(diǎn)幫助。友情提示:要花一塊錢。小菜鳥一只
    發(fā)表于 07-27 19:26

    Linux如何配置本地端口映射

    在linux服務(wù)器上,1024以下的端口是禁止非root用戶使用的。所以如果想要使用80端口訪問(wèn)tomcat,則修改conf/server.xml的端口為80,那么只能使用root用戶
    發(fā)表于 07-22 07:14

    Docker端口映射和nginx安裝流程

    Docker端口映射和nginx安裝
    發(fā)表于 04-14 11:44

    Docker端口映射和nginx安裝

    Docker端口映射和nginx安裝
    發(fā)表于 04-17 11:44

    路由器端口映射的原理及設(shè)置

    路由器端口映射的原理及設(shè)置 端口映射其實(shí)就是我們常說(shuō)的?NAT地址轉(zhuǎn)換的一種,其功能就是把在公網(wǎng)的地址轉(zhuǎn)翻譯成私有地址,?采
    發(fā)表于 01-27 10:05 ?732次閱讀

    使用IdMappedPortTCP進(jìn)行端口映射_Delphi教程

    Delphi教程使用IdMappedPortTCP進(jìn)行端口映射,很好的Delphi學(xué)習(xí)資料。
    發(fā)表于 03-16 15:00 ?40次下載

    關(guān)于自動(dòng)端口映射功能實(shí)現(xiàn)步驟和調(diào)試

    接下來(lái),小編就為大家講解如何使用UPnP協(xié)議實(shí)現(xiàn)網(wǎng)絡(luò)設(shè)備自動(dòng)配置路由器進(jìn)行端口映射。
    發(fā)表于 09-23 10:00 ?4次下載
    關(guān)于自動(dòng)<b class='flag-5'>端口映射</b>功能實(shí)現(xiàn)步驟和調(diào)試

    端口映射端口轉(zhuǎn)發(fā)的區(qū)別?

    端口轉(zhuǎn)發(fā),有時(shí)被叫做隧道,是安全殼為網(wǎng)絡(luò)安全通信使用的一種方法。端口轉(zhuǎn)發(fā)是轉(zhuǎn)發(fā)一個(gè)網(wǎng)絡(luò)端口從一個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)到另一個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)的行為端口映射是NAT的一種,功能是把在公網(wǎng)的地址轉(zhuǎn)翻譯成私有地
    發(fā)表于 12-04 17:31 ?3.7w次閱讀
    <b class='flag-5'>端口映射</b>和<b class='flag-5'>端口</b>轉(zhuǎn)發(fā)的區(qū)別?

    Linux或Windows上實(shí)現(xiàn)端口映射

    Linux或Windows上實(shí)現(xiàn)端口映射
    的頭像 發(fā)表于 04-07 10:19 ?774次閱讀

    端口轉(zhuǎn)發(fā)和端口映射的區(qū)別 端口映射端口轉(zhuǎn)發(fā)的各自意義?

    端口轉(zhuǎn)發(fā)和端口映射的區(qū)別 端口映射端口轉(zhuǎn)發(fā)的各自意義? 端口轉(zhuǎn)發(fā)和端口映射是兩種網(wǎng)絡(luò)技術(shù),它們
    的頭像 發(fā)表于 11-22 17:41 ?4781次閱讀

    路由器映射是什么意思?路由器端口映射怎么設(shè)置?

    有一個(gè)Web服務(wù)器在您的家庭網(wǎng)絡(luò)中運(yùn)行,您可以使用路由器映射將其公開到互聯(lián)網(wǎng)上。這樣,任何人都可以從互聯(lián)網(wǎng)上訪問(wèn)該Web服務(wù)器。 路由器端口映射的好處有: 1. 隱藏原地址端口?;蛘哒f(shuō)
    的頭像 發(fā)表于 05-10 13:42 ?802次閱讀

    容器怎么完成和容器引擎的映射

    容器與注入機(jī)的映射通常涉及網(wǎng)絡(luò)端口、文件系統(tǒng)和環(huán)境變量等方面的配置。以下是如何在不同方面完成容器和注入機(jī)映射的詳細(xì)說(shuō)明: 1. 網(wǎng)絡(luò)
    的頭像 發(fā)表于 06-06 15:18 ?230次閱讀