首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在群集集群中的特定节点上运行码头容器。

在群集集群中的特定节点上运行码头容器。
EN

Stack Overflow用户
提问于 2019-11-07 13:10:07
回答 1查看 1.6K关注 0票数 2

我在尝试实现一个备份系统。此系统需要在特定节点上进行备份时执行码头容器。不幸的是,我无法让它在所需的节点上执行。

这是我在码头群管理器节点上使用和执行的命令。它在群集管理器节点上创建容器,而不是在约束中指定的容器。我遗漏了什么?

代码语言:javascript
复制
docker run --rm -it --network cluster_02 -v "/var/lib:/srv/toBackup" \
   -e BACKUPS_TO_KEEP="5" \
   -e S3_BUCKET="backup" \
   -e S3_ACCESS_KEY="" \
   -e S3_SECRET_KEY="" \
   -e constraint:node.hostname==storageBeta \
   comp/backup create $BACKUP_NAME
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-08 01:41:28

您正在使用一种较旧的经典群集方法来尝试运行您的容器,但几乎可以肯定地使用了Swarm。如果您用docker swarm init安装了群集,并且可以在管理器上看到带有docker node ls的节点,那么情况就是这样。

经典的Swarm作为一个容器运行,它实际上是多个坞引擎的反向代理,拦截对命令(如docker run )的调用,并将它们发送到相应的节点。通常建议避免这种旧的群集实现,除非您有一个特定的用例,并且花时间在每个停靠主机上配置mTLS。

S群模式提供HA管理器,使用Raft进行仲裁(与etcd相同),处理所有管理请求的加密,配置覆盖网络,并使用声明式模型,给出目标状态,而不是命令命令来运行。这是一个非常不同的模式,与经典的斯温。值得注意的是,群集模式只在服务和堆栈上工作,并且完全忽略docker run和其他本地命令,例如:

代码语言:javascript
复制
docker service create \
  --name backup \
  --constraint node.hostname==storageBeta \
  --network cluster_02 \
  -v "/var/lib:/srv/toBackup" \
  -e BACKUPS_TO_KEEP="5" \
  -e S3_BUCKET="backup" \
  -e S3_ACCESS_KEY="" \
  -e S3_SECRET_KEY="" \
  comp/backup create $BACKUP_NAME

请注意,在群集模式中,作业还没有得到很好的支持(有一个有待解决的问题,需要社区对包含此功能的反馈意见)。目前,它的重点是运行通常不退出的持久性服务,除非出现错误。如果您的命令被期望退出,您可以包括一个类似--restart-max-attempts 0的选项,以防止群集模式重新启动它。如果网络不限定范围,您还可能需要做额外的工作。

我还建议将其转换为docker-compose.yml文件,并与docker stack deploy一起部署,以便更好地将服务文档化为配置文件。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58749489

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档