关于MARATHON和容器的端口映射

前不久解决一个问题,我的docker因为网路环境的原因,只能采用-net=host的网络模式运行,但是这样在做服务发现这块就不方便了。因为如果采用这个模式,marathon会自动给启动的容器分派一个端口,这个端口不管你用不用,他就放在哪里,这样在宿主机上就有一个端口被占用了。当然如果你不在他给你分派的这个端口是那个启动什么服务,他的却也没啥,但是就是要启动服务,而且还要使用他分派的这个指定端口,那怎么办呢?

看了一下资料,官方给出的解决办法是通过环境变量来处理。如果你在marathon上创建应用的时候,你可以json中制定ports:[0],0的意思是随机分派,这样marathon会在你启动的容器中的环境变量中去设置这个端口,你切到容器当中运行env命令就可以看到PORT=XXX的环境变量了,这样就能拿到那个端口了

如果采用host模式,而且要指定应用使用的端口,就要增加参数:

"requirePorts":true

然后ports:[your_port]修改一下,就可以指定好启动使用的端口了

转载于:https://my.oschina.net/xueyi28/blog/679355

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值