#docker #docker-compose #windows-subsystem-for-linux #docker-volume
#docker #docker-compose #windows-subsystem-for-linux #docker-volume
Вопрос:
Я хочу смонтировать том для совместного использования между различными контейнерами, запущенными в docker. Но я хочу смонтировать этот том в определенной папке, скажем: /home /myuser /durable.
Мне удалось сделать это таким образом:
- Определите объем docker заранее:
docker volume create --driver local
--opt type=none
--opt o=bind
--opt device=/home/mysuser/durable
myOwnVolumeBind
- Определите 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