修改docker容器端口映射到主機的方法實現(xiàn)
修改docker容器端口映射的方法
如何修改已經(jīng)創(chuàng)建好的容器的映射端口
我們都知道docker在創(chuàng)建時可以指定端口映射,但是容器一旦創(chuàng)建好,就沒有命令支持直接修改映射端口。如果我們已經(jīng)對容器里面的內(nèi)容已經(jīng)做了一定更改,不能刪除進行重建,怎么辦呢?通常間接的辦法是,保存鏡像,再創(chuàng)建一個新的容器,在創(chuàng)建時指定新的端口映射。
有沒有辦法不保存鏡像而直接修改已有的這個容器呢?有。可參考如下
https://stackoverflow.com/questions/19335444/how-do-i-assign-a-port-mapping-to-an-existing-docker-container
測試:以之前創(chuàng)建的nginx容器為例
方法一:
1) 停止容器
2) 停止docker服務(systemctl stop docker.socket)??梢蕴^上一步
3) 修改這個容器的hostconfig.json文件中的端口(如果config.v2.json里面也記錄了端口,也要修改,但是貌似停止容器后,這個文件里面就沒有相應配置了,可能跟版本有關(guān)系),注意是修改hostport后面的端口
4) 啟動docker服務(systemctl start docker)
5) 啟動nginx容器
親測有效
[root@k8s-m1 ~]# docker ps -a|grep nginx 10016be35a75 nginx "/docker-entrypoint.…" 11 hours ago Up 11 hours 0.0.0.0:80->80/tcp nginx-journald #需要停止docker服務,只停容器不行 [root@k8s-m1 10016be35a75db625bac1a2eb8a8ac618f0ba8c7fbbf53812e52e9e0e620f45e]# systemctl stop docker [root@k8s-m1 ~]# cd /var/lib/docker/containers/10016be35a75db625bac1a2eb8a8ac618f0ba8c7fbbf53812e52e9e0e620f45e/ [root@k8s-m1 10016be35a75db625bac1a2eb8a8ac618f0ba8c7fbbf53812e52e9e0e620f45e]# vim hostconfig.json [root@k8s-m1 10016be35a75db625bac1a2eb8a8ac618f0ba8c7fbbf53812e52e9e0e620f45e]# vim config.v2.json [root@k8s-m1 10016be35a75db625bac1a2eb8a8ac618f0ba8c7fbbf53812e52e9e0e620f45e]# systemctl start docker [root@k8s-m1 10016be35a75db625bac1a2eb8a8ac618f0ba8c7fbbf53812e52e9e0e620f45e]# docker start 100 [root@k8s-m1 10016be35a75db625bac1a2eb8a8ac618f0ba8c7fbbf53812e52e9e0e620f45e]# docker ps -a|grep nginx 10016be35a75 nginx "/docker-entrypoint.…" 11 hours ago Up 17 seconds 0.0.0.0:8088->80/tcp nginx-journald
根據(jù)結(jié)果發(fā)現(xiàn)映射端口已經(jīng)從原來的80變成了8088。
方法二:
1)獲得容器nginx-journald的IP,下面兩種方法都可以
將container_name 換成實際環(huán)境中的容器名
[root@k8s-m1 ~]# docker inspect --format='{{.Name}}-{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' nginx-journald /nginx-journald-172.16.0.3 [root@k8s-m1 ~]#docker inspect nginx-journald | grep IPAddress [root@k8s-m1 ~]# docker inspect nginx-journald | grep IPAddress "SecondaryIPAddresses": null, "IPAddress": "172.16.0.3", "IPAddress": "172.16.0.3",
2)iptable轉(zhuǎn)發(fā)端口
將宿主機的81端口映射到容器的80端口
#下面的iptables意思就是目的地址為81端口的流量轉(zhuǎn)發(fā)到172.16.0.3:80 [root@k8s-m1 ~]# iptables -t nat -A DOCKER -p tcp --dport 81 -j DNAT --to-destination 172.16.0.3:80
區(qū)別:第二種方法相當于是通過iptables轉(zhuǎn)發(fā)增加了一個映射端口,原來的映射端口其實也還在,也還能夠進行訪問。而第一種只有一個端口能進行訪問。
到此這篇關(guān)于修改docker容器端口映射到主機的方法實現(xiàn)的文章就介紹到這了,更多相關(guān)docker容器端口映射內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Docker aufs存儲驅(qū)動layer、diff、mnt目錄的區(qū)別介紹
這篇文章主要介紹了Docker aufs存儲驅(qū)動layer、diff、mnt目錄的區(qū)別,需要的朋友可以參考下2017-04-04docker-compose實現(xiàn)容器任務編排的方法步驟
本文主要介紹了docker-compose實現(xiàn)容器任務編排的方法步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-01-01詳解docker中Dockerfile指令創(chuàng)建鏡像
這篇文章主要介紹了詳解docker中Dockerfile指令創(chuàng)建鏡像,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-11-11docker容器與宿主機的數(shù)據(jù)交互方式總結(jié)
這篇文章主要給大家介紹了關(guān)于docker容器與宿主機的數(shù)據(jù)交互,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-11-11基于Docker搭建Graylog分布式日志采集系統(tǒng)的詳細過程
Graylog是一個開源的日志管理工具,支持日志收集、解析、存儲、搜索和可視化,它可以從各種數(shù)據(jù)源收集日志,并通過內(nèi)置的解析器將日志格式化,本文介紹基于Docker搭建Graylog分布式日志采集系統(tǒng),感興趣的朋友一起看看吧2025-02-02