社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  docker

Docker容器动态添加端口

PFinal社区_南丞 • 6 年前 • 154 次点击  
阅读 88

Docker容器动态添加端口


突然遇到一个问题怎么给一个已经在运行的docker容器添加端口,找了找资料,记个笔记。

参考:

方法1 修改iptables端口映射

docker的端口映射并不是在docker技术中实现的,而是通过宿主机的iptables来实现。通过控制网桥来做端口映射,类似路由器中设置路由端口映射。

比如我们有一个容器的80端口映射到主机的8080端口,先查看iptables到底设置了什么规则:

sudo iptables -t nat -vnL复制代码

在结果中有一条:

Chain DOCKER
target     prot opt source               destination
RETURN     all  --  0.0.0.0/0            0.0.0.0/0
DNAT       tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:8080 to:172.17.0.3:80复制代码

我们可以看到docker创建了一个名为DOKCER的自定义的链条Chain。而我开放80端口的容器的ip是172.17.0.3

也可以通过inspect命令查看容器ip:

docker inspect containerId |grep IPAddress复制代码

我们想再增加一个端口映射,比如8081->81,就在这个链条是再加一条规则:

sudo iptables -t nat -A  DOCKER -p tcp --dport 8081 -j DNAT --to-destination 172.17.0.3:81复制代码

如果加错了或者想修改:

先显示行号查看

sudo iptables -t nat -vnL DOCKER --line-number复制代码

删除规则3

sudo iptables -t nat -D DOCKER 3复制代码

方法2 修改容器配置文件

容器的配置文件/var/lib/docker/containers/[containerId]目录下,hostconfig.jsonconfig.v2.json 修改好之后,重启容器服务。

方法3 把运行中的容器生成新的镜像,然后运行新的镜像

  1. 提交一个运行中的容器为镜像
docker commit containerid heropoo/example复制代码

2.运行heropoo/example镜像并添加8080映射容器80端口

docker run -d -p 8000:80  heropoo/example /bin/sh复制代码

试试吧~😎

原文连接:

zhuanlan.zhihu.com/p/65938559


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/33472
 
154 次点击