博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于MARATHON和容器的端口映射
阅读量:6954 次
发布时间:2019-06-27

本文共 500 字,大约阅读时间需要 1 分钟。

hot3.png

前不久解决一个问题,我的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

你可能感兴趣的文章
Eclipse安装m2eclipse插件(Maven)
查看>>
windows 下最快搭建svn服务器方法
查看>>
获取android系统外置存储卡路径的方法
查看>>
mysql 链接错误
查看>>
php 数组字符串搜索array_search技巧
查看>>
hive中的NULL
查看>>
进程死锁(银行家算法)
查看>>
FragmentTransaction add 和 replace 完全解析
查看>>
1. ASIHttpRequest-创建和执行request
查看>>
mysql中某张表修改较大时的处理
查看>>
如何退出telnet界面
查看>>
nginx+多个tomcat配置
查看>>
sublime实用插件-持续更新
查看>>
DotImage使用教程:从数据库中读写图像
查看>>
行业虚拟化发展趋势——“瑞友杯”虚拟化征文
查看>>
XY问题在开发中的体现
查看>>
更换或加装网卡的eth编号顺序配置
查看>>
Executors下面的线程池实现
查看>>
锐捷CCNA系列(五) 交换机配置模式切换
查看>>
squid命中率监控软件安装
查看>>