Docker群服务networking

对于一个DevOps大学项目,我们一直负责使用docker和Jenkins等来构build一个networkingvideostream媒体服务。我们已经完全自由地统治了我们如何做到这一点… Swarm看起来很有趣,所以我想我会给它一个去(因为它复制,可能会给我一些奖励点)。

我的背景是数据(python非常有趣),所以服务器和networking等不是我的专长。 而且,这一切都是在我的机器上本地完成的。

我正在努力与一个实际的docker服务(softinstigate / restheart图像与Mongodb服务进行通信)沟通。

它通过两台docker机复制。 然后连接到本地networking,然后连接到另一个“代理”覆盖networking。

那么,如何连接到特定的restheart api服务来获取HTML页面的一些数据呢? 正常的容器build立等将是localhost:chosenport。 但我相信docker机是不同的IP地址? 如何定义端口号码?

实质上,如何从一个网站页面连接到群体中的特定服务?

我发现有几篇文章可以阅读,但是在那个时候却无法做到正面或反面。 想想我可能试图改变本地主机地址的领导人群节点的IP地址,似乎没有工作(但它是前一阵子)。

泊坞窗命令设置跟随 – 我的手机在莫。

# https://technologyconversations.com/2016/07/29/docker-swarm-introduction-tour-around-docker-1-12-series/ #### create machines for i in 1 2 3; do echo docker-machine create -d virtualbox node-$i docker-machine create -d virtualbox node-$i done docker-machine ls #### active machine = node-1 eval $(docker-machine env node-1) #### node-1 join swarm echo node-1 joins swarm as manager, token variable saved as $TOKEN docker swarm init --advertise-addr $(docker-machine ip node-1) --listen-addr $(docker-machine ip node-1):2377 #### token value for swarm as a envirnomanet variable TOKEN=$(docker swarm join-token -q worker) #### join the relevant worker nodes to the swarm for i in 2 3; do echo node-$i to join the swarm eval $(docker-machine env node-$i) docker swarm join --token $TOKEN $(docker-machine ip node-1):2377 done #### move vack to node-1 echo moving back to node-1 eval $(docker-machine env node-1) #### https://github.com/vfarcic/docker-flow-proxy/blob/master/articles/swarm-mode-listener.md #### create networks echo starting networks docker network create --driver overlay webapp-data-store docker network create --driver overlay proxy #### create swarm listener monitor on proxy network echo starting swarm listener service..... docker service create --name swarm-listener --network proxy \ --mount "type=bind,source=/var/run/docker.sock,target=/var/run/docker.sock" \ -e DF_NOTIF_CREATE_SERVICE_URL=http://proxy:8080/v1/docker-flow-proxy/reconfigure \ -e DF_NOTIF_REMOVE_SERVICE_URL=http://proxy:8080/v1/docker-flow-proxy/remove \ --constraint 'node.role==manager' \ vfarcic/docker-flow-swarm-listener #### create proxy service on proxy network echo proxy service start up docker service create --name proxy \ -p 80:80 -p 443:443 -p 8080:8080 \ --network proxy \ -e MODE=swarm \ -e LISTENER_ADDRESS=swarm-listener vfarcic/docker-flow-proxy #### RESTHEART SERVICE echo start the restheart service docker service create --name video-restheart \ --network webapp-data-store --replicas 3 \ softinstigate/restheart # video mongo data store echo video-db start up docker service create --name video-db \ --network webapp-data-store --replicas 3 \ 

Docker Swarm模式有一个内部的LoadBalancing。 每当您创build一个发布了某个端口的服务,就可以通过点击任何pipe理器节点或工作者节点来访问该服务。 例如:manager IP 192.168.2.2 worker IP 192.168.2.3

说服务在9000端口的工作节点上运行,您可以通过192.168.2.2:9000或192.168.2.3:9000访问它。 Docker内部会负责将请求路由到正确的容器。

请通过这个博客得到一个完整的理解。 http://blog.scottlogic.com/2016/08/30/docker-1-12-swarm-mode-round-robin.html

此外,您可以为容器configuration一个LB,然后击中LB而不是直接击中容器。 你可以在这里find一个例子…

https://technologyconversations.com/2016/08/01/integrating-proxy-with-docker-swarm-tour-around-docker-1-12-series/