Docker 桌面 (Windows) 中的数据卷位置

问题描述 投票:0回答:1

我在 docker 中有一个项目,可以在 MacOS 上正常运行。但我无法让它在 Windows (WSL2) 上运行。

我正在使用适用于 Windows 的 Docker Desktop。 (Windows 11)

Server: Docker Desktop 4.26.1 (131620)
 Engine:
  Version:          24.0.7

我在同一目录中有多个项目(图像)和一个作曲家项目。 Composer 项目启动所有这些项目。

我只是不知道如何找到数据卷。看起来问题的根源是配置中 $PWD 变量的使用。默认情况下,这会导致收到

PWD variable is not set
警告并导致;

来自守护程序的错误响应:无法挂载本地卷:挂载 /docker-volumes/local-mongo-data:/var/lib/docker/volumes/composer_-local-mongo-data/_data, 标志:0x1000:没有这样的文件或目录

但我尝试过;

  • .env
    文件中定义PWD变量并将其设置为
    .
  • 将变量的用法更改为
    ${PWD}
  • /
    替换为
    \
  • 摆脱变量并手动为目录添加前缀,例如
    E:\Projects\composer\docker-volumes
    /E/Projects/composer/docker-volumes
    等。
  • 或在卷目录前添加 wsl 目录前缀
    \\wsl$\docker-desktop-data\data\docker\volumes

但是我无法让它工作。

docker-compose.yml
的一部分在作曲家项目中看起来像这样;

version: "3.0"
services:
  rabbitmq:
    build:
      context: .
      dockerfile: Dockerfile.rabbitmq
    ports:
      - "5672:5672"
      - "15672:15672"
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:15672"]
      interval: 5s
      timeout: 10s
      retries: 5
    volumes:
      - "local-rabbit-data:/var/lib/rabbitmq"
    pull_policy: always
  redis:
    image: "marketplace.gcr.io/google/redis6"
    command:
      - /etc/redis/redis.conf
    ports:
      - "6379:6379"
    volumes:
      - local-redis-data:/data
      - ./redis.conf:/etc/redis/redis.conf
    pull_policy: always
  api:
    image: api
    restart: on-failure
    depends_on:
      - rabbitmq
      - mongodb
      - backend
      - redis
    env_file:
      - .env.api
    ports:
      - "3000:3000"
    volumes:
      - ../api/src:/usr/src/app/src
    command: yarn start:dev
  mongodb:
    image: "bitnami/mongodb:5.0.8"
    env_file:
      - .env.mongodb
    ports:
      - "27017:27017"
    volumes:
      - "local-mongo-data:/bitnami"
    networks:
      default:
        aliases:
          - db
volumes:
  local-rabbit-data:
    driver_opts:
      type: none
      device: $PWD/docker-volumes/local-rabbit-data
      o: bind
  local-mongo-data:
    driver_opts:
      type: none
      device: $PWD/docker-volumes/local-mongo-data
      o: bind
  local-redis-data:
    driver_opts:
      type: none
      device: $PWD/docker-volumes/local-redis-data
      o: bind

在文件资源管理器中导航数据卷的目录:

\\wsl.localhost\docker-desktop-data\data\docker\volumes

我在 Windows 上的项目就在这个目录中:

E:\Projects\

作曲家项目中的卷目录:

E:\Projects\composer\docker-volumes

你能帮我弄清楚如何设置卷目录吗?

docker docker-compose windows-subsystem-for-linux wsl-2
1个回答
0
投票

同样,Windows 11,Rancher Desktop 1.13.1

你能分享一下你的决心吗?

© www.soinside.com 2019 - 2024. All rights reserved.