【问题标题】:Docker Stack Volume mappingDocker 堆栈卷映射
【发布时间】:2022-07-15 20:57:47
【问题描述】:

我正在尝试使用 compose yaml 文件在我的 Swarm 上部署一个由管理节点和工作节点组成的 Docker Stack。

我正在尝试运行 2 项服务(Cardano、Nem)。 Cardano 将在工作节点(IP 为 10.218.77.99 的机器)上运行,如约束中所给。 Nem 将在管理节点上运行。

我面临的问题是 Cardano 的卷映射不起作用并且服务无法运行。它给出错误“类型的安装配置无效..”

虽然 Nem 服务运行良好,因为它在管理器节点中运行并且卷路径很容易访问。

我指定工作节点的磁盘路径的格式是否错误? 或者在 manager 节点上运行的 stack 是否无法检索到 worker 节点的容器日志?

下面是我的 yaml 文件。

version: "3.5"

services:

   Cardano:
    image: coin.azurecr.io/coin-console
    deploy:
      replicas: 2
      placement:
        constraints:
          - node.labels.machine==10.218.77.99
    command: ["BlockTime", "Cardano"]
    volumes:
      - /COINIANPDDisk/blocktime/cardano/logs:/logs

   Nem:
    image: coin.azurecr.io/coin-console
    deploy:
      replicas: 2
    command: ["BlockTime", "Nem"]
    volumes:
      - /COINIANPDDisk1/blocktime/Nem/logs:/logs

感谢您的帮助。

【问题讨论】:

标签: docker docker-compose docker-swarm docker-stack


【解决方案1】:

如果我没看错您的问题,您似乎正在尝试将网络共享挂载为卷。

docker 是基于 linux 的,不支持隐式挂载基于 smb 的共享。等效功能是 nfs,因此首先使用 nfs 共享所需的文件夹,然后,访问 nfs 共享的正确组合语法是:

volumes:
  nfs_volume:
    driver: local
    driver_opts:
      type: nfs
      o: addr=192.168.1.1,rw
      device: ":/path/to/dir"

Use an NFS Share

将其用作普通的 docker 卷:

services:
  Cardano:
    image: coin.azurecr.io/coin-console
    volumes:
      - nfs_volume:/logs

注意: 虽然这种挂载 nfs 共享的简单蛮力方法确实可以以最少的额外要求工作,但对于某些 nfs 无法提供锁定保证/其他低级功能的数据库任务,其他分布式文件系统(如 glusterfs)是必需的。
还提供卷插件,可以自动管理网络卷的创建和挂载。

【讨论】:

  • 嗨,克里斯,很抱歉回复晚了。我想告诉您,您使用 nfs 卷的解决方案一次性解决了我们的问题 - 谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-30
  • 2020-09-11
  • 2017-12-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多