问题标签 [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 投票
2 回答
1028 浏览

php - 以 Docker Swarm 模式链接应用程序

我想知道我们如何在 docker swarm 模式下将 webapp 链接到数据库。我对 docker swarm 模式非常陌生,并且在我的本地机器上进行了基本的集群设置。任何链接都会很棒。

示例:托管一个 drupal 应用程序(连接 drupal cms 容器和 mysql 数据库容器)。

谢谢

0 投票
2 回答
1653 浏览

docker - 在一个节点上部署一个 docker 堆栈(共同调度容器,如 docker swarm)

我知道 docker-compose 与 docker-swarm (现在是旧版)能够在一个节点上共同安排一些服务(使用依赖过滤器,如链接)

我想知道这种协同调度是否可以使用现代 docker 引擎群模式和 Docker 1.13 中引入的新堆栈部署

在 docker-compose 文件版本 3 中,据说在集群中部署堆栈时链接会被忽略,因此显然链接不是解决方案。

我们有一堆服务器来运行批量短期运行的作业,它们之间的网络速度不是很高。我们希望在一台服务器上运行每个批处理作业(由多个容器组成)以避免网络开销。这个功能是在 docker stack 还是 docker swarm 模式下实现的,还是我们应该使用传统的 docker-swarm?

此外,我在放置策略中找不到与另一个容器的联合调度。

0 投票
2 回答
453 浏览

linux - 如何使用 docker swarm 扩展具有多个暴露端口和多个卷的应用程序?

我有一个基于 Java 的应用程序(Jboss 6.1 版社区),流量很大。现在我想使用 docker 和 docker-swarm 迁移此应用程序部署以进行集群。

设想

我的应用程序需要从 docker 容器公开的两个端口,一个是 web 端口(ie9080),另一个是数据库连接端口(ie1521),对于安装在主机系统上的每个容器,几乎没有日志目录之类的东西。

简单的 Docker 示例

Docker 与 Swarm 示例

现在,如果我将上述服务扩展/复制到 2 或 3,它将绑定哪个主机端口以及它将为新创建的容器绑定哪个挂载目录?

任何人都可以帮助我了解规模和复制服务在这种情况下的工作方式吗?

我也经历过--publish--name global但在我的情况下没有任何帮助。

谢谢!

0 投票
1 回答
898 浏览

docker - RabbitMQ 集群如何识别 Docker 的容器重启?

我有三个在 Swarm 模式服务中运行 RabbitMQ 的复制容器。每个容器充当一个 RabbitMQ 节点来创建一个 RabbitMQ 集群。为此,docker service create如下:

此后,我能够rabbitmqctl <hostname> join_cluster在每个从属节点上成功创建一个 RabbitMQ 集群。

我的问题是,如果一个 swarm 节点出现故障,Docker 在另一个节点上启动一个新容器,但是该容器具有不同的随机主机名。

由于 RabbitMQ 使用主机名来识别 RabbitMQ 集群节点,因此它无法识别新容器上的新主机名,因此它假定原始节点无限期关闭。

我尝试使用 Docker 1.13 中的新模板功能,它允许您通过--hostname="{{.Node.ID}}-{{.Service.Name}}"docker service create. 但是,您目前无法根据此自定义主机名发现容器,因此无法以这种方式创建 RabbitMQ 集群。

我希望能够在 Docker 开始运行新容器后让 RabbitMQ 自动重新加入集群节点。这可能吗?

0 投票
1 回答
479 浏览

docker-swarm - 在 docker 服务中公开一系列端口

有没有办法在创建 swarm 服务时公开一系列端口(例如:)-p 1024-2000:1024-2000?我知道容器可以,但是 Swarm 服务也可以吗?如果是,我在文档中找不到如何做到这一点。

我需要此功能来公开包含 vsftpd 的服务。

0 投票
1 回答
1222 浏览

docker - Docker Swarm Mode 路由网格与 linkerd

Docker Swarm Mode 路由网格是 linkerd 路由网格的内置替代品吗?换句话说,如果有开箱即用的解决方案,是否还有理由研究 linkerd?

0 投票
1 回答
117 浏览

docker - 如何从 swarm 外部安全地将图像推送到 docker 1.13 registry:2 服务?

我通过以下方式在 OSX 上的 docker 1.13 swarm 中的本地托管 docker-machine VM 中运行 docker 注册表服务:

该服务正在运行,我可以在 swarm 管理器上推送/拉取图像,但是当我尝试使用端口 5000 从托管 swarm VM 的机器将图像推送到服务时:

有谁知道如何从 swarm 外部安全地访问 docker 注册表服务?可能是一个常见问题解答,但我没有在 docker 网站上找到一篇文章来解决它。它们似乎都在处理容器 TLS 设置或从 swarm 中访问服务器(这相当不错)。

谢谢!

0 投票
0 回答
1070 浏览

docker-compose - 多个网络上的 docker-compose v3 服务

我使用 docker-compose v3 文件在 docker swarm 模式集群上部署服务。我的服务是 elasticsearch 和 kibana。我希望 kibana 可以从外部访问,并且 elasticsearch 可以通过 kibana 访问,并且从外部不可见且无法访问。为了达到这种行为,我创建了 2 个覆盖网络,称为“外部”和“elk_only”。我将 elasticseach 放在“elk_only”网络上,并将 kibana 放在“elk_only”和“外部”网络下。而且事情不起作用。当我转到 localhost:5601(kibana 的端口)时,我收到一条消息:'localhost 拒绝连接'。

我用来部署服务的命令是

elastic-compose.yml 文件内容:

kibana.yml 的内容是

你能帮我解决这个问题并了解出了什么问题吗?任何帮助,将不胜感激!

0 投票
2 回答
26584 浏览

docker - 如何在 Docker 容器中配置 rabbitmq.config?

我正在使用官方 RabbitMQ Docker 映像(https://hub.docker.com/_/rabbitmq/

我尝试rabbitmq.config在运行后编辑容器内的文件

docker exec -it <container-id> /bin/bash

但是,这似乎对容器中运行的rabbitmq服务器没有影响。重启容器显然也没有帮助,因为 Docker 启动了一个全新的实例。

因此,我假设rabbitmq.config为 Docker 容器配置的唯一方法是在容器开始运行之前对其进行设置,我能够部分使用镜像支持的环境变量来完成。

不幸的是,并非所有配置选项都受环境变量支持。例如,我想设置{auth_mechanisms, ['PLAIN', 'AMQPLAIN', 'EXTERNAL']}rabbitmq.config.

然后我找到了RABBITMQ_CONFIG_FILE环境变量,它应该允许我指向我想用作我的配置文件的文件。但是,我尝试了以下方法,但没有成功:

默认rabbitmq.config文件包含:

是容器启动后的内容

rabbitmq.config在 Docker 容器中进行配置的最佳方式是什么?

0 投票
1 回答
1959 浏览

apache-flink - Flink TaskManager 无法连接到 docker swarm 任务中的 JobManager

我无法使 TaskManager 与 docker swarm 堆栈上的 JobManager 通信。

stack.yml我使用的文件内容docker stack deploy是:

Docker 镜像affo/flink:1.1.3是对 dockerhub 的推送,该镜像是按照 README @ https://github.com/apache/flink/tree/release-1.1.3-rc2/flink-contrib/docker-flink构建的。

网络my-net是覆盖可连接的网络。

我尝试使用 DNS 解析从其他容器 ping 每个容器,并且一切正常。

但是没有TaskManager 可以通过JobManager。

我报告 JobManager 日志:http://pastebin.com/Ai5s4Xvr

以及一个TaskManager的日志:http: //pastebin.com/ty5pZhSp

JM 有 VIP 10.0.42.7。并jobmanager.rpc.address设置为jobmanager解析为 10.0.42.7。

任何有关从哪里开始解决问题的帮助或提示将不胜感激。

非常感谢!

更新

我添加的输出docker exec <jobmanager> netstat -tulpn

docker exec <a_taskmanager> telnet jobmanager 6123

我还在 github 上放了一个可能相关问题的链接:https ://github.com/docker/docker/issues/28795 。

再次感谢

更新

我最近设法将其更改jobmanager.rpc.address0.0.0.0仅在 JobManager 上,现在它正在有效地监听:

我什至可以nctelnet从TaskManagers。

但是,现在的问题是(在 JobManager 上):

任何帮助将不胜感激,谢谢!

更新

我想我隔离了这个问题。在 github 上打开的问题:https ://github.com/docker/docker/issues/30874