docker port如何增加端口_docker中添加新的端口以及添加多端口映射

最近由于喜欢上了docker技术,小沃所有的服务器开始全部采用docker技术实现了。但是不知道是否有与小沃一样的运维小伙伴,有需要在docker容器中安装ftp server的需求。如果有,您这边应该遇到了与小沃一样的问题,那就是docker的端口映射如果映射的是范围,会在创建时创建一个docker-proxy的进程,如果您这边批量映射超过10000个端口,那么您的服务器就会产生10000个这个进程,这是非常占用系统资源的。

下面,小沃就介绍一下如何解决这个问题。

方法就是,直接使用docker底层的转发技术,iptables进行转发。

当各位在一个运行了docker的环境中,并且这个环境有配置-p参数。您可以在宿主机上执行iptables-save,然后您就可以看到三段iptables的配置。

而iptables中,无论是路由转发的配置还是防火墙的配置,本身都是自带端口返回功能的。

因此,如果您需要给一个容器配置新的端口映射,您只需要添加端口的iptables即可。

但是务必要记住需要添加三段,根据不同宿主机的iptable反馈的值添加。

那么又有人问了,docker的ip是动态生成的,我们怎么知道这次生成的docker的动态ip是什么呢?

这个问提问的好,获取docker动态ip的方法是docker inspect --format='{{.NetworkSettings.IPAddress}}' dfbe74896b0b

红色字体为container的id,不同的container,id不同,请注意修改。

下面我们假设container的ip为192.168.0.2。

如果您仅仅是要添加一个端口映射,比如添加一个443端口,方法为。

iptables -t nat -A POSTROUTING -s 192.168.0.2/32 -d 192.168.0.2/32 -p tcp -m tcp --dport 443 -j MASQUERADE

iptables -t nat -A DOCKER ! -i docker0 -p tcp -m tcp --dport 30000:40000 -j DNAT --to-destination 192.168.0.2:443

iptables -A DOCKER -d 192.168.0.2/32 ! -i docker0 -o docker0 -p tcp -m tcp --dport 443 -j ACCEPT

注意将IP换成您自己的容易的哦。

第二个例子,这个例子更加的实用,就是为了解决容器内部ftp使用被动模式,所产生的大量问题导致。

这里我们的例子是开放30000到40000这10000个端口。

iptables -t nat -A POSTROUTING -s 192.168.0.2/32 -d 192.168.0.2/32 -p tcp -m tcp --dport 30000:40000 -j MASQUERADE

iptables -t nat -A DOCKER ! -i docker0 -p tcp -m tcp --dport 30000:40000 -j DNAT --to-destination 192.168.0.2:30000-40000

iptables -A DOCKER -d 192.168.0.2/32 ! -i docker0 -o docker0 -p tcp -m tcp --dport 30000:40000 -j ACCEPT

好了,这样就可以了,请注意,不同版本的docker,不同的操作系统可能不同的效果。

实际命令需要根据命令iptables-save的返回值调整,切不可生搬硬套哦。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值