首页 > 解决方案 > 在 docker-compose.yml 中使用 Linux 容器在 Windows 主机上挂载 Docker 卷

问题描述

我刚刚开始使用 Docker 和 Docker Compose 功能来设置我的 Web 应用服务。我正在使用 Linux 容器的 Windows 主机上运行 Docker。我得到了一个名为 db_volume 的命名卷,用于我的 PostgreSQL 服务。

services:
  postgres_image:
    image: postgres:latest
    ports:
      - "5432"
    restart: always
    volumes:
      - db_volume:/var/lib/postgresql/data
    environment:
      POSTGRES_USER: "user"
      POSTGRES_PASSWORD: "password"
      POSTGRES_DB: "db1"
volumes:
  db_volume:

当我docker volume inspect在这个命名卷上使用时,我可以看到 Mountpoint 路径是 Linux 路径。

"Mountpoint": "/var/lib/docker/volumes/dockercompose18019271739475279775_db_volume/_data"

我想知道是否有任何方法可以将此路径转换为 ​​Windows 路径,以便我可以在我的 pgadmin 数据库中导入这些数据。

我已经COMPOSE_CONVERT_WINDOWS_PATHS=1在我的 .env 文件中设置了,但它似乎没有用。

我还在Docker 设置中共享了我的C和驱动器。D

标签: dockerdocker-compose

解决方案


无法将其转换为 windows 路径,因为在这种情况下它不在 windows 文件系统上。您分配的存储位于作为 Windows 安装的一部分创建的 MobyLinux VM 上。如果您想让存储作为本地 Windows 文件系统的一部分出现,那么您需要执行以下操作,将数据目录映射到主机文件系统:

version: '3'

services:
  postgres:
    container_name: pg
    image: postgres:latest
    ports:
      - "5432"
    restart: always
    volumes:
      - d:/pgdata:/var/lib/postgresql/data
    environment:
      POSTGRES_USER: "user"
      POSTGRES_PASSWORD: "password"
      POSTGRES_DB: "db1"

您应该注意,在 Windows 上,您需要通过 Docker 设置中的“共享驱动器”设置公开您的驱动器。


推荐阅读