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

docker - 如何远程连接到 docker swarm?

是否可以从我的本地 mac 在托管在云中的 docker swarm 集群上执行命令?如果是,如何?

我想在本地的 docker swarm 上执行以下命令:

0 投票
1 回答
2266 浏览

docker - Docker Swarm:如何处理持久数据(例如数据库)

我有 3 节点 docker swarm 模式集群(1 名经理和 2 名工人)。

现在我想将一个 mongodb 服务部署到集群,并且我想将数据库存储在我安装在/mnt/data. 所以基本上我希望该服务使用我在每个容器中安装的存储/db/data

我如何实现这一目标?

我让自己熟悉,docker service create --mount但是

  • 我不确定我应该使用 avolume还是 a bind-mount
  • 如果我选择volume如何告诉 docker 将此卷存储在/mnt/data

要将 mongodb 服务耦合到特定节点(安装存储的位置),我将 a 添加label到相应的节点并使用约束启动 docker 服务。

0 投票
1 回答
484 浏览

docker - 如何备份 docker swarm 模式服务配置以进行灾难恢复

我有许多使用 docker swarm 模式作为 swarm 运行的服务器。swarm 中有几个(5+)堆栈运行,每个堆栈都有各自的 docker-compose.yml文件。

我主要使用docker stack deploy来管理我的堆栈(编辑我的 docker-compose.yml然后运行​​deploy以便 compose 文件保持运行配置的真实反映)。这样做的缺点是,我直接对服务所做的任何更改都会在下一次部署时丢失,这会阻止我使用像 portainer 这样的工具来充分发挥其潜力。

在理想情况下,我希望能够将我的整个运行配置导出到docker-compose.yml文件的集合中,从而让我能够管理运行配置和当前配置之间的任何差异。

我可以看到我可以使用一些 shell 脚本、docker inspect -f和一些 go 模板来滚动我自己的东西,但我必须自己维护这一切。

是否有工具或库来支持我的用例?

0 投票
0 回答
240 浏览

docker - 通配符子域适用于 Docker CLI,但不适用于带有 Docker-Compose 的 Docker-Swarm

我有一个应用程序,我们使用子域字符串来指定客户所属的团队。

例如:
customer1.ourdomain.com
customer2.ourdomain.com
...等

在我们的应用程序的幕后,我们customerX从原始 URL 解析字符串以检索客户的适当数据。

当我在没有 compose 的情况下从 cli 运行 docker 容器时,如下所示,我能够连接到我的容器并具有预期的行为:

但是,当我尝试通过docker-compose.yaml访问相同的行为时:

我的浏览器无法连接并超时/挂起。

本质上: localhost:7070 -> works teamName.localhost:7070 -> Does not connect

这是我的 docker-compose.yaml 文件现在的样子:

0 投票
1 回答
239 浏览

docker - 如何将 mac 本地目录与本机 docker 容器同步?

我正在为 mac 使用本机 docker,并且我有一个使用 docker 容器运行的小型应用程序。

docker cp 目前我正在使用命令将数据从我的 mac 手动复制到 docker 容器。

我想让它动态化,我想将数据放在我的本地目录中,该目录应该与 docker 容器同步。

例子:

应该同步到

容器已经在运行,我不应该释放正在运行的容器。我只能停止和启动。有办法吗??提前致谢

0 投票
2 回答
26223 浏览

docker - 如何在部署注册表时在 docker swarm 中解决此问题“没有合适的节点(在 1 个节点上不满足调度约束)”?

我在具有 2 核 4GB ram Centos 的虚拟机中有一个 docker swarm。

在集群中,当我部署 docker 私有注册表(注册表 2.6.4)时,它显示服务状态为永远挂起。我用了 docker service ps <<registry_name>>

当我检查使用docker inspect <<task_id>>消息时,我得到了这个 “没有合适的节点(1个节点上不满足调度约束)”。

我尝试了服务重启和重新部署。

如何解决这个问题?

0 投票
1 回答
1392 浏览

docker - Docker swarm 中的 Jenkins 服务保持在 0/1 副本

我正在尝试使用以下命令在 docker swarm 中运行容错 Jenkins:

但是检查服务状态和正在运行的容器,我发现副本保持在 0。

我尝试在容器中运行 Jenkins(没有 swarm),它运行良好,而且docker 教程中的 swarm 服务示例也运行良好。

是什么阻止了 Jenkins 服务运行?

0 投票
1 回答
541 浏览

docker - Wildfly/Jboss-v10 在集群模式下无法使用 docker swarm

我有我的基于 Web 的 Java 应用程序在运行wildfly/jboss version 10。我正在使用 docker( 1.13.1-cs2) 部署我的应用程序。现在根据一些 HA( High availability) 场景,我希望我的应用程序在集群模式下工作。所以我将 Wildfly 配置更改为集群模式standalone-full-ha.xml. 在此更改之后,只有当我使用默认 docker 网络并使用docker bridge network. 但是根据我的要求,我希望整个容器/我的应用程序作为服务工作docker swarm。但是如果我开始将其作为服务使用,wildfly/jboss 将无法以集群模式启动并抛出如下错误:

注意:我使用默认swarm ingress network端口公开和通信。

根据我的故障排除,此问题与wildfly/jboss version 10创建问题所使用的多播地址有关。我也在docker中尝试了这些步骤多播地址

但这对我来说仍然没有帮助。任何人都可以帮助我吗?非常感谢!

谢谢!

0 投票
1 回答
1452 浏览

docker - 将 etcd 集群自动配置为 Docker swarm 服务

我想找到一种方法将 etcd 集群部署为 Docker Swarm 服务,无需任何交互即可自动配置自身。基本上,我想到了这个命令的精神:

我假设覆盖网络配置为安全并提供加密和身份验证,所以我相信我不需要 TLS,甚至不需要--auto-tls. 当这可以在另一层解决时,不希望寻找一种提供证书的方法而额外头疼。

每个实例我都需要一个唯一--name的,但我可以从一个使用export ETCD_NAME=$(hostname --short).

问题是,我被困在初始配置上。根据聚类指南,有三个选项,但似乎没有一个适合:

  • DNS 发现场景最接近我正在寻找的内容,但 Docker目前不支持 DNS SRV 记录发现。我可以查找etcd,我会得到我节点容器的所有 IP,但是没有_etcd-server._tcp记录。
  • 我无法自动构建ETCD_INITIAL_CLUSTER,因为虽然我知道 IP,但我不知道其他节点的名称,而且我不知道有任何方法可以解决这些问题。(我不会为此向 etcd 容器公开 Docker API 套接字。)
  • 没有预先存在的 etcd 集群,虽然从 discovery.etcd.io 提供初始配置 URI 是一种可能的解决方法,但我有兴趣不这样做。我的目标是“只需从这里部署一个堆栈docker-compose.yml,它就会自动做正确的事情,不问任何问题”,无需动脑筋。

有什么技巧可以拉吗?

0 投票
0 回答
323 浏览

docker - Artifactory:“docker service create”不适用于 0 字节的图像

docker service create ...即使 Docker Hub 中的压缩图像大小为 0B,也可以工作。另一方面,当我将 Artifactory 用作私有注册表时,它会因No such image错误而失败。Docker 守护进程的调试日志说manifest verification failed for digest ...

例如,portainer 的最新标签和主要发布标签(1.13.1、1.13.2 等)的压缩大小为 0 B:https ://hub.docker.com/r/portainer/portainer/tags/

以下命令有效:

但以下命令不起作用:

服务状态:

Docker daemon 的调试日志:

神器日志:

更新1:

docker pull ...正常工作:

并且docker run ...也可以正常工作:

该问题仅存在于 swarm 模式。

更新 2:

正如@Tony 指出的那样,如果图像是多拱清单(因此为 0B 大小),我对 Artifactory 有疑问。例如,https: //hub.docker.com/u/trollin 下的所有镜像都是多架构的,每个镜像的每个标签看起来都是 0 字节。我可以用这些图像和标签重现同样的问题。以trollin/nginx为例。

以下命令有效:

1)

2)

3)

以下命令不起作用: