问题标签 [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?
是否可以从我的本地 mac 在托管在云中的 docker swarm 集群上执行命令?如果是,如何?
我想在本地的 docker swarm 上执行以下命令:
docker - Docker Swarm:如何处理持久数据(例如数据库)
我有 3 节点 docker swarm 模式集群(1 名经理和 2 名工人)。
现在我想将一个 mongodb 服务部署到集群,并且我想将数据库存储在我安装在/mnt/data
. 所以基本上我希望该服务使用我在每个容器中安装的存储/db/data
。
我如何实现这一目标?
我让自己熟悉,docker service create --mount
但是
- 我不确定我应该使用 a
volume
还是 abind-mount
? - 如果我选择
volume
如何告诉 docker 将此卷存储在/mnt/data
要将 mongodb 服务耦合到特定节点(安装存储的位置),我将 a 添加label
到相应的节点并使用约束启动 docker 服务。
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 模板来滚动我自己的东西,但我必须自己维护这一切。
是否有工具或库来支持我的用例?
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 文件现在的样子:
docker - 如何将 mac 本地目录与本机 docker 容器同步?
我正在为 mac 使用本机 docker,并且我有一个使用 docker 容器运行的小型应用程序。
docker cp
目前我正在使用命令将数据从我的 mac 手动复制到 docker 容器。
我想让它动态化,我想将数据放在我的本地目录中,该目录应该与 docker 容器同步。
例子:
应该同步到
容器已经在运行,我不应该释放正在运行的容器。我只能停止和启动。有办法吗??提前致谢
docker - 如何在部署注册表时在 docker swarm 中解决此问题“没有合适的节点(在 1 个节点上不满足调度约束)”?
我在具有 2 核 4GB ram Centos 的虚拟机中有一个 docker swarm。
在集群中,当我部署 docker 私有注册表(注册表 2.6.4)时,它显示服务状态为永远挂起。我用了
docker service ps <<registry_name>>
当我检查使用docker inspect <<task_id>>
消息时,我得到了这个
“没有合适的节点(1个节点上不满足调度约束)”。
我尝试了服务重启和重新部署。
如何解决这个问题?
docker - Docker swarm 中的 Jenkins 服务保持在 0/1 副本
我正在尝试使用以下命令在 docker swarm 中运行容错 Jenkins:
但是检查服务状态和正在运行的容器,我发现副本保持在 0。
我尝试在容器中运行 Jenkins(没有 swarm),它运行良好,而且docker 教程中的 swarm 服务示例也运行良好。
是什么阻止了 Jenkins 服务运行?
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中尝试了这些步骤多播地址
但这对我来说仍然没有帮助。任何人都可以帮助我吗?非常感谢!
谢谢!
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
,它就会自动做正确的事情,不问任何问题”,无需动脑筋。
有什么技巧可以拉吗?
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)
以下命令不起作用: