服务发现如何与现代docker工/docker工合作?
我使用的是Docker 1.11.1和docker-compose 1.8.0-rc2。
在过去的好时光(如此,去年),你可以像这样build立一个docker-compose.yml
文件:
app: image: myapp frontend: image: myfrontend links: - app
然后像这样启动环境:
docker scale app=3 frontend=1
您的前端容器可以检查名为APP_1_PORT
, APP_2_PORT
等variables的环境variables,以发现可用的后端主机并相应地进行自我configuration。
时代已经改变。 现在,我们这样做…
version: '2' services: app: image: myapp frontend: image: myfrontend links: - app
…而不是环境variables,我们得到DNS。 因此,在frontend
容器内,我可以请求app_app_1
或app_app_2
或app_app_3
并获取相应的IP地址。 我也可以要求app
并获取app_app_1
的地址。
但是,我如何发现所有可用的后端容器? 我想我可以循环getent hosts ...
直到失败:
counter=1 while :; do getent hosts app_$counter || break backends="$backends app_$counter" let counter++ done
但是那似乎是丑陋而脆弱的。
我听说过关于循环赛DNS的传闻,但是(a)似乎并没有出现在我的testing环境中,(b)如果您的前端需要同时连接到后端,则不一定有帮助。
如何简单的容器和服务发现意味着在现代的docker世界工作?
- Rails MSSQL – TinyTds ::错误:Adaptive Server连接超时
- 我可以将包含Jenkins设置的docker容器移动到其他服务器吗?
- Docker-Compose错误只在PowerShell中:“无法连接到docker守护进程…”
- 对于基于Docker容器的实现,在同一个容器中运行一对Kafka服务器和Zookeeper服务器是否有意义?
- docker群停止旋转容器在250
- 在Docker机器上使用docker for mac挂载一个文件夹
- 退出代码0泊坞窗
- 在docker主机vs容器限制
- Docker / var / lib / docker / devicemapper / devicemapper使用2.7GB