Docker
Объемы данных докеров
Поиск…
Вступление
Точки данных Docker предоставляют возможность сохранять данные независимо от жизненного цикла контейнера. Объемы представлены рядом полезных функций, таких как:
Установка каталога хоста в контейнере, совместное использование данных между контейнерами с использованием файловой системы и сохранение данных, если контейнер удаляется
Синтаксис
- объем докера [ОПЦИИ] [КОМАНДА]
Установка каталога с локального хоста в контейнер
Можно установить каталог хоста на определенный путь в вашем контейнере, используя --volume
командной строки -v
или --volume
. Следующий пример будет монтировать /etc
на хосте в /mnt/etc
в контейнере:
(on linux) docker run -v "/etc:/mnt/etc" alpine cat /mnt/etc/passwd
(on windows) docker run -v "/c/etc:/mnt/etc" alpine cat /mnt/etc/passwd
Доступ по умолчанию к тому внутри контейнера - чтение и запись. Чтобы установить том, доступный только для чтения внутри контейнера, используйте суффикс :ro
:
docker run -v "/etc:/mnt/etc:ro" alpine touch /mnt/etc/passwd
Создание именованного тома
docker volume create --name="myAwesomeApp"
Использование именованного тома делает управление томами гораздо более удобочитаемым для человека. Можно создать именованный том, используя указанную выше команду, но также можно создать именованный том внутри команды docker run
с помощью опции -v
или --volume
командной строки:
docker run -d --name="myApp-1" -v="myAwesomeApp:/data/app" myApp:1.5.3
Обратите внимание: создание именованного тома в этой форме аналогично установке файла хоста / каталога в качестве тома, за исключением того, что вместо допустимого пути указывается имя тома. После создания названные тома могут использоваться совместно с другими контейнерами:
docker run -d --name="myApp-2" --volumes-from "myApp-1" myApp:1.5.3
После выполнения вышеуказанной команды был создан новый контейнер с именем myApp-2
из myApp:1.5.3
, который делится myAwesomeApp
именем volume с помощью myApp-1
. Мост myAwesomeApp
именем volume устанавливается в /data/app
в контейнере myApp-2
, так же как он монтируется в /data/app
в контейнере myApp-1
.