如何修改Docker容器埠對映?
容器未啟動?
如果你的容器還沒有構建時,想新增埠對映時,你只需要在建立容器的時候新增
-p
引數,想新增幾個埠對映就追加幾個
-p
引數。類似於如下示例:
docker run --name api_dfo_hyperf_ws \
-v /Users/pudongping/glory/codes/dfo/api_dfo_hyperf:/api_dfo_hyperf \
-p 9502:9502 \
-p 9503:9503 \
-p 9504:9504 \
-p 9505:9505 -it \
--entrypoint /bin/sh \
alex/alex_api_dfo:v1.0
容器已啟動?
但是想修改或者新增埠時,先停止掉正在執行的容器。
以下內容都是以容器 id 為
cbe26510c276
進行操作的,請務必將容器 id 換成你自己需要修改的容器 id。
docker stop {容器的名稱或者 id }
比如:
docker stop cbe26510c276
檢視容器完整的
hash_of_the_container
數值:
docker inspect {容器的名稱或者 id } | grep Id
#
比如:
docker inspect cbe26510c276 | grep Id
#
會得到如下結果:
#
"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
數值,你也可以直接先切換到當前容器相關目錄中
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
配置檔案:
vim hostconfig.json
修改
hostconfig.json
配置檔案
在
hostconfig.json
配置檔案中,找到
"PortBindings":{}
這個配置項,然後進行修改。我這裡新增了兩個埠對映,分別將宿主機的
8502
埠以及
8505
埠對映到容器的
8502
埠和
8505
埠。
HostPort
對應的埠代表
宿主機 的埠。
建議容器使用什麼埠,宿主機就對映什麼埠,方便以後管理。當然,具體情況,具體分析。
{
"PortBindings": {
"8502/tcp": [
{
"HostIp":
"",
"HostPort":
"8502"
}
],
"8505/tcp": [
{
"HostIp":
"",
"HostPort":
"8505"
}
]
}
}
如果
config.v2.json
配置檔案或者config.json
配置檔案中也記錄了埠,也需要進行修改,如果沒有,就不需要改。
只需要修改
"ExposedPorts": {}
相關之處。
{
"Args": [],
"Config": {
"ExposedPorts": {
"8502/tcp": {},
"8505/tcp": {}
},
"Entrypoint": [
"/bin/sh"
]
}
}
最後重啟 docker,然後檢視容器相關配置資訊是否已經修改完畢
#
重啟 docker
service docker restart
#
或者
systemctl restart docker
檢視容器相關配置資訊:
docker inspect {容器的名稱或者 id }
#
比如:
docker inspect cbe26510c276
配置符合你的要求後,再次啟動容器:
docker start {容器的名稱或者 id }
#
比如:
docker start cbe26510c276
Docker Desktop for Mac
How to login the VM of Docker Desktop for Mac
因為在 Docker for MacOS 中,容器的宿主機並不是 MacOS 本身,而是在 MacOS 中執行的一個 VM 虛擬機器
。虛擬機器的路徑可以透過檢視 Docker Desktop 的配置介面
Disk image location
配置獲得。
那麼我們如何進入這個虛擬機器呢?
最簡單的方式是採用 justincormack/nsenter1 進入,這個映象只有 101KB,已經非常小了。
docker run -it --rm --privileged --pid=host justincormack/nsenter1
-
–rm 表示在退出的時候就自動刪除該容器; -
–privileged 表示允許該容器訪問宿主機(也就是我們想要登入的 VM )中的各種裝置; -
–pid=host 表示允許容器共享宿主機的程式名稱空間(namespace),或者通俗點兒解釋就是允許容器看到宿主機中的各種程式;
然後再進入
/var/lib/docker/containers
目錄修改
config.v2.json
配置檔案和
hostconfig.json
配置檔案即可。整體來說,在 MacOS 上除了進入
/var/lib/docker/containers
目錄時,進入方式有所不同以外,修改配置檔案方式和上文一樣。需要注意的是,修改的時候請使用
vi
編輯器,因為這個映象沒有安裝
vim
編輯器的。
比如:
vi /var/lib/docker/containers/a7377587b9f08cfe87af9a8ffa4da0f90bf07fb0a1cd6833a5ffcd9c37b842d0/config.v2.json
vi /var/lib/docker/containers/a7377587b9f08cfe87af9a8ffa4da0f90bf07fb0a1cd6833a5ffcd9c37b842d0/hostcon
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70013542/viewspace-2910994/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Docker(33)- 如何修改 docker 容器的埠對映Docker
- Docker 如何動態修改容器埠對映Docker
- 修改 Docker 容器對映的埠Docker
- 修改docker容器的埠對映Docker
- 教你如何修改執行中的容器埠對映
- 【Docker】Docker基礎-埠對映與容器互聯Docker
- Docker容器內部埠對映到外部宿主機埠Docker
- 如何修改正在執行的docker映象的埠對映?Docker
- Docker-埠對映Docker
- WSL docker打通容器間通訊和追加埠對映Docker
- Docker容器內部埠對映到外部宿主機埠的方法小結Docker
- Docker介紹下載安裝、製作映象及容器、做目錄對映、做埠對映Docker
- Docker 埠對映問題解決Docker
- Linux埠對映是什麼?如何進行埠對映?Linux
- Docker 網路基礎配置一(埠對映)Docker
- Docker 埠對映防火牆規則配置Docker防火牆
- Docker執行nginx映象及docker網路埠對映DockerNginx
- 如何將csf ip 埠對映
- Docker Image 的釋出和 Container 埠對映DockerAI
- docker 修改port 埠Docker
- VMware Fusion 埠對映
- Nginx埠對映配置Nginx
- 修改對映地址
- 埠對映,內網網站對映外網訪問,透過80埠對映實現內網網站
- Java Web之tomcat修改80埠和專案對映JavaWebTomcat
- Docker映象的構建以及資料卷和埠對映Docker
- Docker 橋接模式下埠對映會繞過防火牆Docker橋接模式防火牆
- iptables 實現埠對映
- Docker 埠對映 telnet 始終不通(看完原因想自抽)Docker
- docker修改容器時間Docker
- docker學習系列2儲存對容器的修改Docker
- NAT(PAT)與埠對映(轉)
- 如何修改docker容器的重啟策略(重啟模式)?Docker模式
- juniper SRX 地址埠對映設定
- Docker容器內部修改時區Docker
- Docker(十七)-修改Docker容器啟動配置引數Docker
- Linux下埠對映工具rinetdLinux
- 路由器埠對映設定方法路由器