问题标签 [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 回答
1321 浏览

docker - 我可以使用什么命令来找出我正在使用的 docker swarm 的版本?

我找不到返回给我已安装的 docker swarm 版本的命令。abcd@lenovo9fh04:simple$ docker 版本客户端:版本:1.13.0 API 版本:1.25 Go 版本:go1.7.3 Git 提交:49bf474 内置:2017 年 1 月 18 日星期三 16:20:26 OS/Arch:darwin/amd64

服务器:版本:1.13.0 API 版本:1.25(最低版本 1.12) Go 版本:go1.7.3 Git 提交:49bf474 构建:2017 年 1 月 18 日星期三 16:20:26 OS/Arch:linux/amd64 实验:true abcd@lenovo9fh04 :simple$ docker swarm 版本

用法:docker swarm 命令

管理群

选项: --help 打印使用

命令: init 初始化 swarm join 加入 swarm 作为节点和/或管理器 join-token 管理加入令牌 leave 离开 swarm unlock Unlock swarm unlock-key 管理解锁密钥更新 更新 swarm

运行 'docker swarm COMMAND --help' 以获取有关命令的更多信息。

0 投票
1 回答
413 浏览

docker - 将 docker stack deploy 与独立更新的服务一起使用的正确/更好的方法是什么?

我们有几个应用程序是更大应用程序的一部分。

这些应用程序中的每一个都有一个在每次提交时构建的 Docker 映像。

我希望您使用 docker swarm 模式和 docker stacks 来自动部署/更新这个更大的应用程序。

让我们假装我有这个撰写文件(留下不相关的部分)

当我对购物车服务存储库进行更改时,我希望堆栈仅更新cart_service,但将其product_service固定在当前版本。此外,当产品服务更新时,我希望能够仅更新该服务,但将购物车服务保留为当前固定版本。

在这种情况下我有什么选择?

我能想到的:

  • 做一些花哨的事情并在提交时重新生成撰写文件,只更改我需要更改的部分
  • 不要使用docker stack deploy,而是使用旧的docker service create
  • 某种类型的环境变量传递到 compose 文件中(这里的问题是每个服务仍然必须知道其他服务的当前版本对吗?)
  • 为每个服务使用不同的堆栈(这有什么问题或问题吗?)

我忽略了什么吗?这样的建筑不是故意的吗?这里有什么更好的方法?

0 投票
1 回答
448 浏览

docker - 跨多个节点的 docker 引擎群模式中的持久卷

在 docker engine swarm 模式下跨多个节点共享卷以实现数据持久性的最佳方法是什么?

任何参考肯定会有所帮助。

0 投票
1 回答
705 浏览

ubuntu - Docker 服务更新错误:EOF

我们有一个 GO 应用程序,它监听代码 repo 更改和 Redis 消息,以便在 Docker Swarm 环境中应用 CD。该应用程序最近更新为使用github.com/docker/dockerv1.13.1 客户端代码。它适用于我的 Mac,它运行 Docker v1.13.1。当我将此代码部署到运行 Ubuntu 和 Docker v1.12.6 的开发服务器时,尝试调用cli.ServiceUpdate(..). 据我所知,CLI 客户端是向后兼容的(直到 v1.10.x 或其他版本)。查看代码和屏幕截图时,两者之间的联系是“更新服务时发生错误”的日志消息。

事件以为我们使用的是 v1.13.1 版本的 golang 库,我们在客户端初始化时指定了 api 版本 v1.24:

这是有问题的代码:

这是 syslog 中发生的事情的屏幕截图:

码头工人系统日志

这是来自的输出docker info

关于我可能做错了什么的任何想法?

0 投票
3 回答
7025 浏览

ruby-on-rails - 如何让 nginx 等待我的上游服务在 Docker Swarm 中启动?

我将一个 nginx 代理服务和一个 rails 应用程序服务部署到一个 docker swarm 中。nginx 依赖于我的 docker-compose 文件中的应用程序。

我的 nginx.conf 文件将流量定向到我的上游应用程序服务(暴露在端口 3000),就像这样(仅显示上游部分)。

我的 docker-compose 文件如下所示:

我的主机设置为群管理器。

这一切都很好 - 没有问题。

但是,即使我的 docker-compose 文件中有一个依赖部分 - 到 nginx 服务启动时,应用程序服务可能还没有完全(?)准备好,所以当上游服务配置部分尝试 DNS 解析“应用程序: 3000",似乎没有完全找到它。因此,当我访问我的网站时,我在我的 nginx 日志中发现以下错误消息:

如果我杀死正在运行 nginx 服务的 docker 容器,然后 swarm 稍后重新安排它并返回,如果我然后访问相同的 URL,它就可以完全正常工作,并且请求成功地向上传递到 app:3000。

我怎样才能防止这种情况发生 - 启动时间有点过时并且在 nginx 启动时它还无法正确解析我的名为 app:3000 的群服务 - 相反它正试图将流量传递到一个IP地址....

顺便说一句 - 如果我重新启动我的虚拟机也会发生同样的情况 - 当 docker(在 swarm 模式下)再次启动服务时 - 我可能会遇到同样的问题。重启 nginx 容器即可解决问题。

0 投票
1 回答
164 浏览

docker - Docker swarm 模式负载均衡

我已经建立了一个 docker swarm 模式集群,有两个经理和一个工人。这是在 Centos 7 上。它们在机器 dkr1、dkr2、dkr3 上。dkr3 是工人。

前几天我正在升级到 v1.13,并且想要零停机时间。但它并没有完全按预期工作。我正在尝试找出正确的方法,因为这是拥有集群的主要目标之一。

群处于“全局”模式。也就是说,每台机器一个副本。我的升级方法是排空节点,停止守护进程,yum 升级,启动守护进程。(请注意,这会清除我的 ExecStart=... 的守护程序配置设置! 升级时要小心。

我们的客户端/ESB 访问 dkr2,它在 swarm 上执行负载平衡魔法。dkr2 是领导者。dkr1 是“可达的”

我放下了dkr3。没有问题。升级的码头工人。把它带回来了。没有因打倒工人而造成的停机时间。

打倒了dkr1。一开始没有问题。当我把它放下时还在工作。升级的码头工人。把它带回来了。但在启动过程中,它 404'ed。一上来就OK了。

下架了dkr2。我没有真正记录当时发生的事情,对不起。

无论如何,当我的应用程序在 dkr1 上启动时,它 404'ed,因为服务器尚未启动。

知道我可能做错了什么吗?我想我需要某种健康检查,因为容器显然没问题,但服务器还没有响应。所以那是我停机的时候。

0 投票
1 回答
181 浏览

docker - 从 jenkins 作业中获取 docker swarm manager 节点

我想从不属于 swarm 的主机获取 swarm manager 节点名称或 IP 地址。

主机是 Jenkins,我配置了 SSH 密钥以访问 swarm 中的每台机器,但要创建服务,我需要在管理器上运行命令。

什么方法是获得活动集群管理器名称或地址之一的最佳方法?

0 投票
1 回答
600 浏览

docker - Docker swarm 模式使用 --mount 创建服务

我正在尝试使用以下命令在 docker 中创建服务。

我收到以下错误:

我怀疑这是因为我在命令中使用了--mount选项。这个命令有什么问题吗。

0 投票
2 回答
721 浏览

apache-spark - 通过docker-compose在dock swarm模式下部署spark集群

我正在尝试使用此处docker-compose定义的文件在以 docker swarm 模式工作的机器上部署我的 apache spark 集群。

docker stack deploy -c compose-file.yml spark_cluster在我的 docker swarm manager 机器上调用以按定义部署我的服务,但是当我点击时我得到以下场景docker stack ps spark_cluster

似乎 swarm 刚刚接受了在我的 swarm manager 节点上运行的服务,并在我的 worker swarm 节点上被拒绝了。

我怎么能设法找到与这种情况相关的日志?如果是这种情况,我在哪里可以查看与此部署相关的日志?我想知道错误列中消息的确切含义。

0 投票
2 回答
3969 浏览

docker - 这是否可以在 docker swarm 服务中获取所有正在运行的容器 ID?

我是 docker swarm 模式的新手,如果我想了解更多关于我的 swarm 服务的详细信息,我可以从命令行运行 docker service ps "service name",或者从 docker rest "/v2/services/my-ngx"

[msreddy@swarmnode1 ~]$ docker service ps my-ngx ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS voj7fllhnmqb my-ngx.1 nginx:latest swarmnode1 Running Running 26 minutes ago

但它没有给我容器ID。我想从我的 swarm 服务中跟踪容器,这可能吗?