Как использовать привязку именованного тома в Docker compose с помощью Docker для Windows с WSL2 (Windows 10 v.2004)

#docker #docker-compose #windows-subsystem-for-linux #docker-volume

#docker #docker-compose #windows-subsystem-for-linux #docker-volume

Вопрос:

Я хочу смонтировать том для совместного использования между различными контейнерами, запущенными в docker. Но я хочу смонтировать этот том в определенной папке, скажем: /home /myuser /durable.

Мне удалось сделать это таким образом:

  1. Определите объем docker заранее:
    docker volume create --driver local 
   --opt type=none 
   --opt o=bind 
   --opt device=/home/mysuser/durable 
   myOwnVolumeBind
  
  1. Определите docker-compose.yml и используйте общий том как внешний:
 version: '3.7'

services:
  node1:
    build: ./config/node1
    image: myImage
    hostname: host1
    environment:
       - ISC_DATA_DIRECTORY=/dur/node2
    volumes:
     - myOwnVolumeBind:/dur
     - ./config:/config
  node2:
    build: ./config/node2
    image: myImage
    hostname: host2
    environment:
       - ISC_DATA_DIRECTORY=/dur/node2
    volumes:
     - myOwnVolumeBind:/dur
     - ./config:/config
volumes:
  myOwnVolumeBind:
    external: true
  

При первом запуске docker-compose up все проходит гладко.

Но, если я остановлю контейнеры с помощью docker-compose down и попытаюсь снова запустить их, произойдет сбой, указывающий, что он не может смонтировать том…

Это последовательность:

 docker-compose up  
  

— Готово и отлично
затем…

 salva@ESXPS13JSALVADOR:~/projects/sharding$ docker-compose down
  

Остановка sharding_node2_1 … выполнена
Остановка sharding_node1_1 … выполнена
Удаление sharding_node2_1 … выполнено
Удаление sharding_node1_1 … выполнено
Удаление сетевого sharding_default

 salva@ESXPS13JSALVADOR:~/projects/sharding$ docker-compose up
  

Создание сетевого «sharding_default» с драйвером по умолчанию
Ошибка создания sharding_node1_1 …
Создание sharding_node2_1…

ОШИБКА: для sharding_node1_1 не удается запустить службу node1: ошибка при монтировании тома ‘/var /lib /docker /volumes/myOwnVolumeBind/_data’: не удалось смонтировать локальный том: смонтировать /run/desktop/mnt/host/wsl/docker-desktop-bind-mounts/Ubuntu-20.04/46565b0cdfb27e1c6f9311ee05188e1104e98034a9b364fa3ae2db8076f54f93:/var/lib/docker/volumes/myOwnVolumeBind/_data , флаги: 0x100 Создание sharding_node2_1 … ошибка

ОШИБКА: для sharding_node2_1 не удается запустить службу node2: ошибка при монтировании тома ‘/var /lib /docker /volumes/myOwnVolumeBind/_data’: не удалось смонтировать локальный том: смонтировать /run/desktop/mnt/host/wsl/docker-desktop-bind-mounts/Ubuntu-20.04/46565b0cdfb27e1c6f9311ee05188e1104e98034a9b364fa3ae2db8076f54f93:/var/lib/docker/volumes/myOwnVolumeBind/_data , флаги: 0x1000: нет такого файла или каталога

ОШИБКА: для node1 не удается запустить службу node1: ошибка при монтировании тома ‘/var /lib /docker /volumes/myOwnVolumeBind/_data’: не удалось смонтировать локальный том: смонтировать /run/desktop/mnt/host/wsl/docker-desktop-bind-mounts/Ubuntu-20.04/46565b0cdfb27e1c6f9311ee05188e1104e98034a9b364fa3ae2db8076f54f93:/var/lib/docker/volumes/myOwnVolumeBind/_data , флаги: 0x1000: нет такого файла или каталога

ОШИБКА: для node2 не удается запустить службу node2: ошибка при монтировании тома ‘/var /lib /docker /volumes/myOwnVolumeBind/_data’: не удалось смонтировать локальный том: смонтировать /run/desktop/mnt/host/wsl/docker-desktop-bind-mounts/Ubuntu-20.04/46565b0cdfb27e1c6f9311ee05188e1104e98034a9b364fa3ae2db8076f54f93:/var/lib/docker/volumes/myOwnVolumeBind/_data , флаги: 0x1000: ошибка такого файла или каталога отсутствует: Обнаружены ошибки при запуске проекта.


Я не знаю, что здесь происходит. Почему он может смонтировать том в первый раз, но не в следующий …. кстати, мне непонятно, где должен быть файл: /var/lib /docker/volumes/myOwnVolumeBind/_data

Возможно, я делаю это неправильно. Моя цель — иметь возможность решить, в какой папке моего дистрибутива Ubuntu (WSL2) будут храниться мои долговременные данные. Если есть лучший подход, пожалуйста, дайте мне знать.

Есть идеи?

Заранее спасибо

Комментарии:

1. В последних двух версиях Docker Desktop Edge было исправлено несколько ошибок, связанных с томами в WSL 2. Какую версию Docker Desktop вы используете?

2. Сообщество Docker Desktop: 2.3.0.4 (46911) Движок: 19.03.12