Докер: створити постійний том у певному каталозі


16

Мені потрібно створити стійкий том для Docker. Том повинен бути названий extra-addonsі розташований у /mnt/.

Я виконую цю команду:

sudo docker volume create /mnt/extra-addons

Я отримав це повідомлення про помилку:

Error response from daemon: create /mnt/extra-addons: "/mnt/extra-addons" includes invalid characters for a local volume name, only "[a-zA-Z0-9][a-zA-Z0-9_.-]" are allowed. If you intended to pass a host directory, use absolute path

Зауважте, що коли я просто запускаю:, sudo docker volume create extra-addonsя не стикаюся з цією проблемою, але коли я перевіряю спільний том, використовуючи sudo docker inspect extra-addons, я бачу, що він розташований у не потрібному мені місці:

[
    {
        "CreatedAt": "2018-04-21T14:40:25+03:00",
        "Driver": "local",
        "Labels": {},
        "Mountpoint": "/var/lib/docker/volumes/extra-addons/_data",
        "Name": "extra-addons",
        "Options": {},
        "Scope": "local"
    }
]

Я маю на увазі, я хочу бачити об'єм таким: /mnt/extra-addons

Будь-яка ідея?

Відповіді:


13

Я знайшов рішення:

Мені довелося встановити плагін, що зберігається на локальному рівні .

Я повинен був змонтувати гучність, щоб створити до точки монтажу, наступним чином:

 sudo docker volume create -d local-persist -o mountpoint=/mnt/ --name=extra-addons

Перевірте, чи отримав я те, що очікував:

sudo docker volume inspect extra-addons

Результат:

[
    {
        "CreatedAt": "0001-01-01T00:00:00Z",
        "Driver": "local-persist",
        "Labels": {},
        "Mountpoint": "/mnt/",
        "Name": "extra-addons",
        "Options": {
            "mountpoint": "/mnt/"
        },
        "Scope": "local"
    }
]

Це я шукав.


6

Якщо ви не хочете встановлювати плагіни на свій докер, я рекомендую створити символічне посилання для вашого обсягу:

$ docker volume create <myVolume>
$ docker volume inspect <myVolume> 
[
    {
        "CreatedAt": "0001-01-01T00:00:00Z",
        "Driver": "local",
        "Labels": {},
        "Mountpoint": "/var/lib/docker/volumes/<myVolume>/_data",
        "Name": "<myVolume>",
        "Options": {},
        "Scope": "local"
    }
]
$ mkdir /mnt/<myVolume>
# if you already have data in your volume, you should copy it to `/mnt/<myVolume>` now
$ sudo rm -rf /var/lib/docker/volumes/<myVolume>/_data
$ sudo ln -s /mnt/<myVolume> /var/lib/docker/volumes/<myVolume>/_data

Тепер сміливо використовуйте об’єм, як завжди (з усіма вашими даними, /mntяк ви хотіли)


Не вважайте, що видалити керовані томи докера не дуже добре. Використовуйте замість цього кріплення, щоб монтувати каталог хостів у докер.
Лекс

4

Я не думаю, що використання local-persistдрайвера - це шлях. Він не оновлювався деякий час. Ви можете змонтувати локальний каталог (хост) у контейнер докера за допомогою докерного кріплення.

Виконуючи наступне, створюється новий контейнер із змонтованим каталогом, відображеним на моєму робочому столі.

mkdir extra-addons
docker run -it -v /Users/me/Desktop/extra-addons:/mnt/extra-addons busybox /bin/sh
ls

Тепер ви можете бачити mntпапку в корені вашого контейнера.

bin dev etc home mnt proc root sys tmp usr var

Створення нового файлу в контейнері

touch /mnt/extra-addons/test.txt

Створює файл test.txt на моїй хост-машині. На вказаному шляху. Зараз це двостороння папка для читання / запису спільного доступу. Кілька контейнерів можуть вміщувати одну і ту ж папку. І воно збережеться, як тільки ви закриєте контейнер / сек.

введіть тут опис зображення


Дякую, це врятувало мені крок. Я намагався додати гучності. просто встановіть реж
Хаїм Елія
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.