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

docker - 将节点添加到 docker swarm

我们有一个运行 docker 1.13 的集群,我需要向其中添加 3 个运行 docker 17.04 的节点。

  1. 这是可能的还是会引起问题?
  2. 是否有可能在不让整个集群崩溃的情况下更新旧节点?

谢谢

0 投票
1 回答
381 浏览

nginx - Docker 中的 NGINX 服务在限制内存和 CPU 使用时失败

我有一个主节点和 5 个工作节点,我在部署 nginx 服务时使用以下命令。

它失败-

另一方面,这有效-

请让我知道如何将我的 CPU 减少到 1 个核心并将内存限制为 512M

0 投票
3 回答
7194 浏览

docker - 如何使用 docker swarm 保持粘性会话(会话持久性)?

我有一个基于 Java 的 Web 应用程序,它部署在jboss-10.1.0(wildfly). 我正在使用 docker swarm 模式(docker version 1.12.1)来扩展我的应用程序,一切正常,但我面临的唯一问题是会话管理。

现在让我们来看场景。

我有两个实例正在为我的应用程序运行(即App1和使用此 URL 直接访问。App2nginxchintan.test.com:9080chintan.test.com:80chintan.test.com

现在默认负载均衡器正在使用 RR( Round-Robin algorithm) 来服务我的 Web 请求。所以当我第一次访问chintan.test.com它时,它会转到App1实例并显示登录页面,我使用凭据登录,几分钟后一切正常,它切换到App2并再次出现登录页面.

有什么方法或工具(应该是开源的)可以用来处理会话吗?所以至少我登录App1并坚持App1直到我注销。

谢谢!

0 投票
1 回答
8846 浏览

docker - 为什么我无法通过名称或 VIP 访问 Docker Swarm 中的服务?

所以我有一个在 Ubuntu 主机上运行的 docker 引擎(版本 1.12.6,构建 78d1802)。

我创建了一个使用

我有一个本地预构建的图像,我使用它创建了一个名为 nodeapp 的服务,如下所示

现在,当我键入时,curl localhost:3000我得到了预期的正确响应,并且到目前为止一切正常。

该文档和我提到的许多其他文档似乎表明 docker v1.12.x 通过 DNS 或 VIP 方法内置了负载平衡/路由。

所以我试图通过服务名称或虚拟IP访问我的服务,如下所示

curl nodeapp:3000我得到的curl: (6) Could not resolve host: nodeapp

curl 10.255.0.6:3000我得到的curl: (7) Failed to connect to 10.255.0.6 port 3000: Connection timed out

注意我使用下面的命令来获取虚拟ip

docker service inspect --format {{.Endpoint.VirtualIPs}} nodeapp产生[{boq3g7s47w47q2ej56li9s3dw 10.255.0.6/16}]

为什么我无法使用 VIP 或服务名称访问我的服务,即使我可以使用 localhost:3000 访问它?

0 投票
1 回答
907 浏览

docker - 如何在 docker swarm 集群中获取服务的 Ips?

我正在运行一个具有 2 个节点的 docker swarm 模式集群,并部署 5 个服务:[ mysql 、 mongo 、 app ] 并希望使用我的管理器节点中的 ansible 脚本来填充数据库。但是我无法从节点获取 Ip 以访问容器中的数据库服务?
例如:mysql -h {{ mysql_service_host }} ....

如何从节点获取容器IP或服务IP?是否可以在 docker swarm 中使用模式主机?

0 投票
1 回答
293 浏览

macos - docker deploy to docker for mac swarm mode 不工作,如何排除故障?

我正在尝试将一堆服务部署到 docker for mac。让我事先说一下,将我的堆栈部署到一个真正的群体中非常有效。

我为 mac Beta 版本 17.05.0-ce-rc1-mac8 (16582) 运行 docker。我确实跑过swarm init它。

这是我的 yaml 文件:

问题是,docker stack services proxy返回 REPLICAS 0/1。显然它在等待什么。docker service logs proxy_proxy什么都不返回。这是输出syslog -k Sender Docker

我不知道这是否正常,图像已正确下载。

现在,我该如何解决正在发生的事情?顺便说一句:我确实应用了所有必要的标签,这是输出docker inspect moby

另外,我在另一个容器中使用本地持久驱动程序。

0 投票
2 回答
1594 浏览

docker - 链接多个 Docker Swarm

我想知道是否可以将多个swarm manager链接在一起让他们合作。例如,如果一个管理器缺少可用的工作节点来完成任务,则让一个管理器将请求转发给另一个管理器。

0 投票
2 回答
1566 浏览

docker - Docker swarm 模式:缩小节点并移除服务

我为t1, t2, ..., tk跨节点的给定服务设置了一组任务N1, N2, ...Nw

由于使用率较低,我不需要像k. 我只需要l任务 ( l < k)。

事实上,我不需要w节点,所以我想开始移除机器并支付更少的费用。一次卸下一台机器就可以了。

每个服务都有自己的状态。服务以复制模式启动。

1)如何删除单个节点并强制 docker swarm 不要为服务重新创建相同数量的任务?

笔记:

  • 我可以确保没有工作被重新路由到特定节点上运行的任务,因此删除特定节点是安全的。
  • 这是最简单的解决方案,假设在删除的节点上提供服务,我将最终得到w - 1节点和服务。lk - l

或者

2)如何从 docker swarm 中删除特定的容器(任务),并通过删除任务的数量来降低服务的副本数量?

笔记:

  • 我假设我已经删除了一个节点。该节点的服务被重新部署到其他节点。
  • 我监控自己不提供流量的容器(任务)-> 不需要维护状态

或者

3)任何其他解决方案?

0 投票
1 回答
2499 浏览

docker - Docker Swarm - 无法从私有注册表中提取

我正在 Swarm 集群上运行一项服务,这要归功于docker stack deploy --with-registry-auth这个 compose 文件:

这在我部署时工作正常,但是当我稍后将工作节点添加到集群时,新工作人员无法提取运行任务所需的映像。系统日志报告:

level=error msg="错误后不继续拉取:拒绝:来自请求 \"/v2/my-gcloud-project/my/image/manifests/123\" 的权限被拒绝 \123\"。"

level=info msg="Translating \"denied: Permission denied for \\"123\\" from request \\"/v2/my-gcloud-project/my/image/manifests/123\\". \" 到 \"存储库 us.gcr.io/my-gcloud-project/my/image not found: 不存在或没有拉取访问权限\""

level=error msg="pulling image failed" error="repository us.gcr.io/my-gcloud-project/my/image not found: 不存在或没有 pull access" module="node/agent/taskmanager" 节点.id=...服务.id=...任务.id=...

level=error msg="fatal task error" error="No such image: us.gcr.io/my-gcloud-project/my/image:123@sha256:..." module="node/agent/taskmanager" node.id=... service.id=... task.id=...

但是,当我在该机器上手动运行docker pull时,它工作正常,因为集群中的每台机器都通过了我的私有 Google 注册表的身份验证,这要感谢docker login.

因此我的问题是:

  • 为什么添加的工作人员不能从私有注册表中提取?
  • 具体做什么--with-registry-auth

非常感谢

注意:节点运行 Ubuntu 16.04.2 LTS,Docker 版本为:

0 投票
0 回答
218 浏览

java - Docker 群模式中的 MongoDB 连接重置

我的服务器上有一个 MongoDB 数据库,它在 docker 容器中运行。我曾经使用 docker-compose 启动容器。最近我将我的 docker 更新为 17.03.1-ce 并在其上配置了 swarm 模式。

然后我运行我的 mongodb 容器并尝试从 java(使用 mongodb-async 驱动程序,如果重要的话)对其执行大型操作(使用游标读取 ~10000000 集合),它随机失败并显示消息“连接重置”。

我尝试使用 simple 运行 mongodb docker run,它可以工作,但是当我尝试在 swarm 模式下使用它时,docker stack deploy --compose-file ...出现了这个错误。它可能会出现,也可能不会,我所有的尝试中有大约 20% 会成功。

MongoDB 容器日志没有说什么有用的,end connection就像一切正常一样。

Docker 安装在 Ubuntu 16.04 LTS 上,使用官方 MongoDB 映像mongo:3.4

希望有人可以帮助我。谢谢。