问题标签 [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.
docker - 将节点添加到 docker swarm
我们有一个运行 docker 1.13 的集群,我需要向其中添加 3 个运行 docker 17.04 的节点。
- 这是可能的还是会引起问题?
- 是否有可能在不让整个集群崩溃的情况下更新旧节点?
谢谢
nginx - Docker 中的 NGINX 服务在限制内存和 CPU 使用时失败
我有一个主节点和 5 个工作节点,我在部署 nginx 服务时使用以下命令。
它失败-
另一方面,这有效-
请让我知道如何将我的 CPU 减少到 1 个核心并将内存限制为 512M
docker - 如何使用 docker swarm 保持粘性会话(会话持久性)?
我有一个基于 Java 的 Web 应用程序,它部署在jboss-10.1.0(wildfly)
. 我正在使用 docker swarm 模式(docker version 1.12.1
)来扩展我的应用程序,一切正常,但我面临的唯一问题是会话管理。
现在让我们来看场景。
我有两个实例正在为我的应用程序运行(即App1
和使用此 URL 直接访问。App2
nginx
chintan.test.com:9080
chintan.test.com:80
chintan.test.com
现在默认负载均衡器正在使用 RR( Round-Robin algorithm
) 来服务我的 Web 请求。所以当我第一次访问chintan.test.com
它时,它会转到App1
实例并显示登录页面,我使用凭据登录,几分钟后一切正常,它切换到App2
并再次出现登录页面.
有什么方法或工具(应该是开源的)可以用来处理会话吗?所以至少我登录App1
并坚持App1
直到我注销。
谢谢!
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 访问它?
docker - 如何在 docker swarm 集群中获取服务的 Ips?
我正在运行一个具有 2 个节点的 docker swarm 模式集群,并部署 5 个服务:[ mysql 、 mongo 、 app ] 并希望使用我的管理器节点中的 ansible 脚本来填充数据库。但是我无法从节点获取 Ip 以访问容器中的数据库服务?
例如:mysql -h {{ mysql_service_host }} ....
如何从节点获取容器IP或服务IP?是否可以在 docker swarm 中使用模式主机?
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
:
另外,我在另一个容器中使用本地持久驱动程序。
docker - 链接多个 Docker Swarm
我想知道是否可以将多个swarm manager链接在一起让他们合作。例如,如果一个管理器缺少可用的工作节点来完成任务,则让一个管理器将请求转发给另一个管理器。
docker - Docker swarm 模式:缩小节点并移除服务
我为t1, t2, ..., tk
跨节点的给定服务设置了一组任务N1, N2, ...Nw
。
由于使用率较低,我不需要像k
. 我只需要l
任务 ( l < k
)。
事实上,我不需要w
节点,所以我想开始移除机器并支付更少的费用。一次卸下一台机器就可以了。
每个服务都有自己的状态。服务以复制模式启动。
1)如何删除单个节点并强制 docker swarm 不要为服务重新创建相同数量的任务?
笔记:
- 我可以确保没有工作被重新路由到特定节点上运行的任务,因此删除特定节点是安全的。
- 这是最简单的解决方案,假设在删除的节点上提供服务,我将最终得到
w - 1
节点和服务。l
k - l
或者
2)如何从 docker swarm 中删除特定的容器(任务),并通过删除任务的数量来降低服务的副本数量?
笔记:
- 我假设我已经删除了一个节点。该节点的服务被重新部署到其他节点。
- 我监控自己不提供流量的容器(任务)-> 不需要维护状态
或者
3)任何其他解决方案?
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 版本为:
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
。
希望有人可以帮助我。谢谢。