问题标签 [docker-swarm-mode]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
6700 浏览

docker - 如何让主机网络与 docker swarm 模式一起使用

这个最近合并到 docker 的 17.06 候选版本中的 PR来看,我们现在支持使用 swarm 服务的主机网络。但是,尝试一个非常相似的命令时,我看到了一个错误:

我正在运行 17.06 候选版本:

我的命令与 docker 现在支持的命令有什么不同?

0 投票
1 回答
380 浏览

docker - Docker swarm 负载平衡 - 如何为服务提供通用名称?

我读了群路由网格

我创建了一个使用 tomcat 服务器并在 8080 侦听的简单服务。

docker swarm init我在 node1 创建了一个节点管理器。

docker swarm join /tokens我使用节点 2 和节点 3 的管理器提供的令牌来创建工作人员。

docker node ls显示我的服务的 5 个实例,3 个在节点 1 上运行,1 个在节点 2 上运行,另一个在节点 3 上。

docker service create image我创建了服务。

docker service scale imageid=5缩放它。

我的应用程序使用在 JVM 级别维护的原子序数。

如果我点击http://node1:8080/service25 次,所有请求都会转到 node1。它如何平衡节点?

如果我点击http://node2:8080/service,它将转到节点 2。

为什么不使用循环?

疑点:

  1. 上述步骤有什么问题吗?
  2. 我错过了什么?
  3. 我觉得我错过了什么。与常见的服务名称一样http://domain:8080/service,swarm 将以循环方式工作。

我只想了解群模式。到目前为止,我对外部负载均衡器不感兴趣。

我如何看到集群负载平衡在起作用?

0 投票
1 回答
524 浏览

docker - Docker Swarm 发现仍然有用吗?

我正在学习 docker swarm,并对 swarm 发现选项感到困惑,我看到互联网上的许多教程都使用此选项来使用 docker-machine 创建容器,但是当我输入docker swarm doc上的文档时,它说:

您正在查看旧版独立 Swarm 的文档。这些主题描述了独立的 Docker Swarm。在 Docker 1.12 及更高版本中,Swarm 模式与 Docker Engine 集成。大多数用户应该使用集成的 Swarm 模式。

那么,发现选项的用例是什么?所有教程都使用 docker-machine 创建一个 swarm,我总是需要它,或者可以在我的集群中的机器上安装 docker,将它们加入 swarm 并正常使用?

我看到了一些名称,例如Docker Swarmand Docker Swarm Mode,是否有任何区别或只是不同的方式来调用相同的功能?

0 投票
1 回答
3756 浏览

docker - 如何使用 Docker Swarm Mode 或 Docker Compose 部署 IPv6 容器

最后,我希望通过 compose 或 swarm 模式部署一个纯 IPv6 网络。现在,我只想部署一个使用 IPv6(仅)的容器。我目前对路由不感兴趣(只是容器到容器的连接)。

我的设置:

  • 操作系统:Centos 7
  • dockerd --ipv6 --fixed-cidr-v6=2001:db8:1::/64 --iptables=true --ip-masq=true --mtu=1600 --experimental=true
  • docker-engine-17.05.0.ce-1.el7.centos.x86_64.rpm
  • 主机具有 IPv4 和 IPv6 地址。两者都启用了转发(这对我来说并不重要)。

我已经尝试了似乎是每一种组合(我只列出了几个)

带有容器和网络的自包含 Docker 堆栈:

结果:容器中只有 IPv4 地址,0.0.0.0 被忽略。


外部预先创建的网络 (根据https://stackoverflow.com/a/39818953/1735931

docker network create --driver overlay --ipv6 --subnet=2001:3984:3989::/64 --attachable ext_net

结果:容器中的 IPv4 和 IPv6 地址都被忽略,但 cap_add 被忽略(在 Swarm 模式中不支持),因此上面的 ifconfig disable ipv4 尝试不起作用。

我目前没有安装 docker-compose,接下来可能会尝试,但是有没有办法在 Docker Swarm 模式下运行纯 IPv6 容器?

注意:我可以在没有 swarm/compose 的情况下手动运行和配置一些仅 IPv6 的容器:(如上创建网络,甚至只使用默认网桥)

或速记:

0 投票
1 回答
8021 浏览

nginx - Traefik Docker Swarm 模式真实 ip 背后的 Nginx

我在 docker swarm 环境中使用 Traefik 作为 nginx 服务前面的反向代理。这是我的 docker-stack.yml:

一切正常,但我需要 Nginx 访问日志中的真实客户端 IP,而不是得到类似 10.0.1.37 的内容

如何获得真正的客户端IP?

谢谢,

0 投票
1 回答
5207 浏览

networking - How do networking and load balancer work in docker swarm mode?

I am new to Dockers and containers. I was going through the tutorials for docker and came across this information. https://docs.docker.com/get-started/part3/#docker-composeyml

What is webnet? The document says

Instruct web’s containers to share port 80 via a load-balanced network called webnet. (Internally, the containers themselves will publish to web’s port 80 at an ephemeral port.)

So, by default, the overlay network is load balanced in docker cluster? What is load balancing algo used?

Actually, it is not clear to me why do we have load balancing on the overlay network.

0 投票
1 回答
110 浏览

docker - 集群 Docker Swarm 主机

这可能是一个简单的问题,但我想知道其他人是如何做到这一点的。

我有一个带有 3 个管理器的 Docker Swarm Mode 集群。可以说他们有IP

  • 192.168.1.10
  • 192.168.1.20
  • 192.168.1.30

我可以通过任何 IP、内部路由网格等访问我的 Web 容器。但如果主机出现故障,我访问我的 Web 容器的 IP 显然不会再被路由到容器。所以我需要某种单一的 DNS 记录或指向我集群中活动地址的东西。

你们是怎么做到的?我应该将所有三个 IP 作为 A 记录添加到 DNS 吗?或者在集群前面有一个负载均衡器/反向代理?

我想有不止一种解决方案,很高兴听到其他人如何解决这个问题:-)

非常感谢

0 投票
5 回答
9661 浏览

docker - 具有外部化到 .env 文件的图像版本的 Docker Swarm

我曾经将我的图像版本外部化到我的 .env 文件中。这使它易于维护,并且我不会docker-compose.yml仅仅为了升级版本而修改我的文件,所以我确信我不会错误地删除一行。

但是,当我尝试将我的服务部署stack到 时swarm,docker 引擎抱怨我的图像不是正确的存储库/标签,并带有以下确切消息:

来自守护程序的错误响应:rpc 错误:代码 = 3 desc = ContainerSpec:“GROUP/IMAGE:”不是有效的存储库/标签

为了解决这个问题,我可以直接在docker-compose.yml文件中修复图像版本。这里有什么逻辑或者它是一个错误吗?但这混合修复了 docker-compose 和变量的一部分。

干杯,奥利维尔

0 投票
1 回答
20198 浏览

networking - 什么是覆盖网络以及 DNS 解析如何工作?

我无法从集群连接到外部mongodb服务器。docker swarm

据我了解,这是因为集群使用了覆盖网络驱动程序。我对吗?

如果没有,docker overlay 驱动程序如何工作,如何mongodb从集群连接到外部服务器?

0 投票
2 回答
2747 浏览

java - 如何连接到 Docker Swarm 中的 Postgresql 服务?

我有一个带有 3 个服务器(1 个管理器和 2 个工作人员)的 Docker Swarm 集群设置。

我使用以下命令启动了 Postgresql 服务:

我之前还创建了数据卷:

现在,我有另一个要启动的服务,它基本上是一个 Java 应用程序,我捆绑到一个 Docker 映像中,我想将它连接到 postgresql 服务。我为 url 尝试了以下组合:

jdbc:postgresql://172.18.0.1:5432/db (docker_gwbridge)

jdbc:postgresql://172.17.0.1:5432/db (docker0)

jdbc:postgresql://localhost:5432/db

jdbc:postgresql://postgresql:5432/db

知道什么可以工作吗?