docker - 在 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
解决方案
无法将其转换为 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 设置中的“共享驱动器”设置公开您的驱动器。
推荐阅读
- xpath - XPATH - 检索类标题和上面的一个
- c# - 如何在 Xamarin 平台(Windos、Android 和 IOS)中播放本地视频文件 (.mp4)
- rx-java2 - 拥有一个 ObservableTransformer 的单例是否有意义?
- php - PHP 使用 DOMDocument 和/或 Regex 从 HTML 中提取 url
- vba - 如何用excel中单独工作表中的数据填充单元格?
- python - 结合 selenium 测试类和 tkinter
- wordpress - 获取 Wordpress 查询中的所有类别、自定义字段值?
- php - Laravel 验证总是从 API 返回 200 OK
- sql - 需要帮助更正我的 SQL 以进行交叉表查询
- docker - 将 Docker 容器连接到本地 Elasticsearch 服务