eal*_*eon 6 docker docker-compose docker-swarm
现在,我在群集集群中有两个节点
$ docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
yey1njv9uz8adf33m7oz0h80f * redis2 Ready Active Leader
lbo91v2l15h24isfd5jegoxu1 redis3 Ready Active
Run Code Online (Sandbox Code Playgroud)
这是docker-compose.yml文件
version: "3"
services:
daggr:
# replace username/repo:tag with your name and image details
image: daggr
hostname: examplehostname
deploy:
replicas: 1
resources:
limits:
cpus: "0.1"
memory: 50M
restart_policy:
condition: on-failure
ports:
- "4000:80"
networks:
- webnet
visualizer:
image: dockersamples/visualizer:stable
ports:
- "8080:8080"
volumes:
- "/var/run/docker.sock:/var/run/docker.sock"
deploy:
placement:
constraints: [node.role == manager]
networks:
- webnet
redis:
image: redis
networks:
- webnet
networks:
webnet:
Run Code Online (Sandbox Code Playgroud)
如您所见,我正在明确设置daggr服务的主机名
daggr容器基本上运行python龙卷风Web服务器
class MainHandler(tornado.web.RequestHandler):
def get(self):
self.write('Hello from daggr running on %s\n' % socket.gethostname())
Run Code Online (Sandbox Code Playgroud)
我已经测试了如下
$ curl redis2:4000
Hello from daggr running on examplehostname
Run Code Online (Sandbox Code Playgroud)
现在,我希望它不是静态设置主机名,而是要动态匹配容器运行所在的主机名。即。如果daggr容器在redis2上运行,则应该说redis2,在redis3上应该说redis3。
如何从docker-compose.yml文件中指定?
如果您至少运行Docker,17.10则可以使用以下代码:
services:
daggr:
hostname: '{{.Node.Hostname}}'
Run Code Online (Sandbox Code Playgroud)
请参阅此以获取更多信息。
| 归档时间: |
|
| 查看次数: |
5416 次 |
| 最近记录: |