关于MARATHON和容器的端口映射
博客专区 > xueyi28 的博客 > 博客详情
关于MARATHON和容器的端口映射
xueyi28 发表于2年前
关于MARATHON和容器的端口映射
  • 发表于 2年前
  • 阅读 52
  • 收藏 0
  • 点赞 2
  • 评论 0

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

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

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

"requirePorts":true

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

共有 人打赏支持
粉丝 7
博文 74
码字总数 28446
×
xueyi28
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: