当前位置:  开发笔记 > 后端 > 正文

Docker Swarm模式下的浏览器服务容器

如何解决《DockerSwarm模式下的浏览器服务容器》经验,为你挑选了1个好方法。

我使用docker-machine创建了3个vm:

docker-machine create -d virtualbox manager1
docker-machine create -d virtualbox worker1
docker-machine create -d virtualbox worker2

这些是他们的IP:

docker-machine ls
NAME      ACTIVE   DRIVER       STATE     URL                         SWARM   DOCKER    ERRORS
manager   -        virtualbox   Running tcp://192.168.99.102:2376                                   v1.12.6
worker1   -        virtualbox   Running   tcp://192.168.99.100:2376           v1.13.0-rc5  
worker2   -        virtualbox   Running   tcp://192.168.99.101:2376           v1.13.0-rc5   

然后 docker-machine ssh manager1

和:

docker swarm init --advertise-addr 192.168.99.102:2377

然后worker1和worker2加入到swarm中.

现在我创建了一个覆盖网络:

docker network create -d overlay skynet

并在全局模式下部署服务(节点的1个任务):

VM_IP:SERVICE_PORT[R

节点实际上有1个容器(任务).

现在,我想直接访问我的虚拟主机..或者,至少,我想直接浏览我的服务容器,因为我想用nginx开发我的服务负载均衡器.为此,在我的nginx conf文件中,我想指向一个特定的服务集合器(即现在我在全局模式下有3个节点(1个管理员和2个工作者),所以我有3个任务在运行 - > i我想选择这3个容器中的一个.我怎样才能做到这一点?

[编辑]:我可以指向我的swarm节点,只需浏览到VM_IP:SERVICE_PORT,即:

192.168.99.102:8200

但仍有内部负载平衡.我在想,如果我指向一个特定的swarm节点,我将在该特定节点内使用容器.但是现在没什么.



1> thaJeztah..:

添加到上面提供的@ ben-hall的答案; Docker 1.13将为该--publish标志引入一种高级语法,其中包括mode=host发布服务端口的发布模式(请参阅此处的pull-request:docker#27917和docker#28943).使用此模式,支持服务的容器(任务)的端口将直接发布到它们运行的​​主机上,从而绕过Routing Mesh(因此,负载均衡器).

请记住,因此,只有服务的单个任务可以在节点上运行.

在码头1.13及以上; 以下示例创建myservice服务,任务的端口80在部署任务的节点的端口8080上发布.

docker service create \
  --name=myservice \
  --publish mode=host,target=80,published=8080,protocol=tcp \
  nginx:alpine

与通过路由网格发布端口的任务相反,docker ps还显示为使用"主机模式"发布的任务发布的端口(请参阅该PORTS列);

CONTAINER ID        IMAGE                                                                           COMMAND                  CREATED              STATUS              PORTS                           NAMES
acca053effcc        nginx@sha256:30e3a72672e4c4f6a5909a69f76f3d8361bd6c00c2605d4bf5fa5298cc6467c2   "nginx -g 'daemon ..."   3 seconds ago        Up 2 seconds        443/tcp, 0.0.0.0:8080->80/tcp   myservice.1.j7nbqov733mlo9hf160ssq8wd

推荐阅读
mobiledu2402851173
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有