gpt4 book ai didi

docker - docker engine swarm模式需要服务发现

转载 作者:行者123 更新时间:2023-12-04 17:16:29 29 4
gpt4 key购买 nike

我对 docker swarm 感到困惑。据我所知,在 docker 引擎为 swarm 模式提供 native 支持之前,运行 swarm 的旧方法是在容器中运行 manager 和 workers。旧的容器化 swarm 的文档解释了如何使用 consul、etcd 或 zookeeper 设置服务发现。服务发现是必要的,因为服务在随机端口运行以避免冲突,对吗?

docker 引擎群模式的文档没有解释如何设置服务发现。现在我很困惑,如果该机制包含在 swarm 模式中,或者文档不完整。

我在哪里可以找到关于群模式的清晰、最新的解释,以及它与服务发现等概念的关系?

最佳答案

事实上,从 docker 1.12 开始,docker swarm 模式实现了它自己的服务发现功能。

在单个主机设置上(测试)

要查看它,例如它的负载平衡功能,您可以执行以下操作:

#Setup your docker engine as a docker swarm manager
docker swarm init
#Create an nginx service
docker service create --name nginx --publish 80:80 nginx

现在您可以使用 docker service ls 列出服务,并看到您有一个 nginx 服务。
如果你做 docker ps ,您会看到您的容器没有直接向机器公开任何端口,但是如果您尝试检查您的服务,该端口确实公开为服务端口。因此,要访问您的容器,您需要连接到 docker swarm 管理器的地址和您发布的端口。在这里,由于您的机器是管理员,您需要访问 localhost:80 ,或您的 $DOCKER_HOST:80如果使用 docker-machine 或同等产品
> docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7f9d93dbbce5 nginx:latest "nginx -g 'daemon off" About a minute ago Up About a minute 80/tcp, 443/tcp nginx.1.4zr3zacuw06ax9swuit4wbacd
> curl -X GET localhost:80
# Result showing nginx stuff

如果你想引用文档,你可以在 swarm key concept page上有很多信息。并在 swarm mode routing mesh page

在多主机设置上

如果您正在运行多主机设置,就像在正常使用 swarm 模式下一样,您将至少有两个 docker 引擎在 swarm 模式下运行:一个作为工作人员,一个作为管理员。默认情况下,管理器也是一个 worker ,可以托管容器

与 swarm 交互时,您将始终直接与 docker swarm 管理器交谈。然后你可以像上面一样创建一个 nginx 服务,该服务将在管理器或工作节点上创建。然后,要通过其端口访问您的容器,您需要通过其 ip 访问管理器节点,这会将请求转发到容器,无论是在工作器还是管理器节点上。您还可以扩展它并查看负载平衡的发生情况,因为它将以循环方式查询两个容器。

内部服务发现

从 docker 1.12 开始,还有一个内部服务发现功能,可让您使用其服务 dns 访问其他服务。

要访问此功能,您需要创建一个覆盖网络,并将您的服务附加到它
 docker network create --driver overlay mynetwork
docker service create --name nginx --network mynetwork nginx
docker service create --name testing --network mynetwork node sleep 10000 #node because it already has ping cmd
#locate your testing service's container, and ping the nginx host
docker exec -ti ping nginx
#See the magic happen

再一次,很多东西都在文档中,在 上。 Docker Engine > 管理集群 部分。见 Swarm mode overview

关于docker - docker engine swarm模式需要服务发现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40786414/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com