【问题标题】:Docker persistent volume on GCPGCP 上的 Docker 持久卷
【发布时间】:2021-07-13 10:15:25
【问题描述】:

我正在将服务部署到 GCP,并且我想保留数据库和日志。

不考虑虚拟机的本地存储。

如何将 GCP 磁盘/存储桶挂载到容器中?

这是我的docker-compose.yml

version: '3'
services:
  backend:
    image: mybackend:latest
    volumes:
      - logs-data:/path/to/logs

  database:
    image: postgres:12.6-alpine
    volumes:
      - db-data:/var/lib/postgresql/data
      - logs-data:/var/log/postgresql

volumes:
  db-data:
    driver: ??
    driver_opts: ??

  logs-data:
    driver: ??
    driver_opts: ??

gcePersistentDisk 仅适用于 Kubernetes。

【问题讨论】:

  • 如果您的磁盘连接到 VM,您可以使用它,我认为只需更改 docker-compose 中的挂载路径并将所有数据写入磁盘内即可。
  • @HarshManvar GCP磁盘只能同时挂载到一个VM。我从“VM 实例”>“VM 实例详细信息”>“编辑”>“附加磁盘”安装它
  • 您可以在本地环境中设置此配置吗?如果是这样,你能分享一下你是怎么做的吗?
  • @guillaumeblaquiere 我在开发环境中使用nfs。但是,我找不到使用nfs 连接到 GCP 磁盘/存储桶的文档。
  • 看看memorystore ;)

标签: docker google-cloud-platform docker-compose persistent-volumes


【解决方案1】:

您可以使用gcsfuse 创建一个 docker 卷,将数据存储在谷歌云存储中。

  1. 首先按照 [gcsfuse] 文档中的说明安装 gcsfuse。
  2. 创建谷歌云存储桶
  3. 使用 gcsfuse 在本地文件系统上挂载存储桶
  4. 绑定挂载此文件系统 5

【讨论】:

    【解决方案2】:

    Docker内置驱动local只支持NFSbind(绑定到本地文件系统)。

    bind 不被视为解决方案,因为容器不会位于同一节点中。

    以下是 Google 提供的可能解决方案:

    1. 创建另一个容器作为NFS 主机
    2. 创建多个容器组成一个GlusterFS集群,并使用NFS连接它
    3. 安装 3rd-party 驱动插件REX Ray(repo 处于非活动状态)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-28
      相关资源
      最近更新 更多