Легкость создания томов Docker в Windows

Объемы Docker предпочтительным способом работы с постоянными данными, создаваемыми и используемыми контейнерами Docker. Давайте посмотрим, как это работает, рассмотрев, как создавать объемы Docker в Windows. Вы также узнаете, как их управлять!

В этом блоге есть видео, созданное участником TechSnips, Мэттом МакЭлритом. Можете посмотреть его, или, если предпочитаете текст, читайте дальше!

Хранение постоянных данных

Если вам нужно сохранить постоянные данные для контейнеров, у вас есть несколько вариантов. Сначала я покажу вам, как использовать связывание путей. В данный момент я нахожусь в папке под названием data на моем C:\. Если я перечислю содержимое этой папки, вы увидите, что у меня есть пять текстовых файлов.

Multiple text files in the C:\data folder

Если я хочу сделать эту папку доступной для контейнера, я могу примонтировать ее при запуске контейнера.

Давайте запустим контейнер с помощью docker run. Я запущу этот контейнер в интерактивном режиме, затем укажу -V. Здесь я укажу путь к моей папке с данными, за которым последует двоеточие, затем я укажу путь внутри контейнера, куда я хочу, чтобы эта папка была примонтирована.

Для этого я собираюсь указать папку C:\shareddata. Затем я укажу основное образ Windows сервера, и, наконец, скажу, что хочу запустить PowerShell, когда окажусь в контейнере.

docker run -it -v c:\Data:c:\shareddata microsoft/windowsservercore powershell

Теперь, когда я нахожусь в новом контейнере, если я выведу содержимое C:\, вы увидите, что у меня есть папка shareddata.

Listing directory contents in a Docker container

Давайте зайдем в эту папку и посмотрим, что внутри. Вот мои пять тестовых файлов, которые находятся на моем хосте контейнера.

Files on the host

I can also create files in this folder, which will be available to other containers or my container host. Let’s go ahead and run a new item to create a file called containertest.

Creating a file on the container host

Мы видим, что новый файл был создан изнутри контейнера. Теперь я выйду из этого контейнера, что приведет к его выключению, запустив exit.

Если я запущу docker ps, вы увидите, что в данный момент нет запущенных контейнеров.

Looking for running containers

Перечисление данных в томах Docker.

Теперь давайте еще раз перечислим содержимое папки данных с моего хоста контейнера.

Listing files on the container host

Мы видим новый файл, созданный изнутри контейнера, названный containertest. У привязанных монтирований есть некоторые ограниченные функции, однако тома предпочтительнее для выполнения наших целей. Для начала работы с томами мы можем выполнить ту же команду для запуска контейнера, но на этот раз с несколькими небольшими отличиями. Где мы указали том, вместо использования пути в файловой системе хоста контейнера, я собираюсь использовать слово hostdata в качестве имени тома, который я хочу создать и использовать.

Изнутри нового контейнера, если я выведу содержимое C:\, вы снова увидите, что у меня есть папка с именем shareddata.

Listing files

Если я перечислю содержимое этой папки, она в данный момент пуста, потому что мы создали пустой том. Теперь давайте запустим Ctrl-P-Q, что выведет нас из запущенного контейнера, но оставит его запущенным в фоновом режиме.

С хоста контейнера выполните docker volume ls. Это покажет текущие тома на этом хосте контейнера. У меня есть том с именем hostdata, который был создан, когда я указал его в команде docker run.

Listing Docker volumes

Если я выполню docker ps, мы увидим наш запущенный контейнер.

Listing running containers

Остановите этот контейнер с помощью docker stop. Теперь у нас нет запущенных контейнеров.

Stopping a Docker container

Удалите остановленные контейнеры, выполнив docker rm. Если я снова перечислю тома, вы увидите, что том hostdata все еще доступен и может быть подключен к новым контейнерам.

Listing Docker volumes

Создание томов Docker

Другой способ создать том – использовать команду docker volume create. Если вы не указываете имя, Docker даст ему имя, которое представляет собой длинный список случайных символов. В противном случае, вы можете указать имя здесь. Я назову этот том logdata. Теперь мы видим его в списке, когда мы снова перечисляем тома.

Creating a new Docker volume

Теперь вы подключите его к новому контейнеру. Используйте docker run снова, и для тома укажите только что созданный том и подключите его к c:\logdata.

> docker run -it -v logdata:c:\logdata microsoft/windowsservercore powershell

Изнутри контейнера перейдите в папку logdata и создайте пару файлов. В данный момент в этом каталоге нет файлов, поэтому продолжайте и создайте их.

PS> New-Item -Name Log1.txt -ItemType File
PS> New-Item -Name Log2.txt -ItemType File

Теперь у меня есть два файла журналов в этом каталоге.

Two files in C:\logdata

Снова запустите Ctrl-P-Q, чтобы выйти из этого контейнера, пока он еще работает. Пока этот контейнер работает, запустите новый контейнер с тем же объемом, смонтированным.

> docker run -it -v logdata:c:\logdata microsoft/windowsservercore powershell

Если мы запустим список файлов в папке logdata в новом контейнере, мы увидим, что два файла журналов общие.

Two log files being shared with containers

Теперь выйдите из этого контейнера. У вас все еще должен быть один работающий контейнер и два остановленных контейнера.

Two containers still running

Теперь остановите все работающие контейнеры, а затем выполните docker rm, чтобы удалить все остановленные контейнеры.

Removing Docker containers

Снова перечислите тома. Том logdata все еще доступен для монтирования в будущие контейнеры.

Volume still available

Если вы запустите docker volume, вы получите некоторую справку о использовании для этой команды.

Docker volume syntax

Инспекция томов Docker

Мы уже рассмотрели create, поэтому перейдем к inspect. Если я запущу docker volume inspect против тома logdata, он вернет свойства этого тома, включая точку монтирования, которая является физическим путем к тому на хосте контейнера.

Inspecting Docker volumes

Давайте откроем эту папку с помощью Invoke-Item и посмотрим. В папке logdata есть папка с именем data. Если мы откроем ее, мы увидим файлы, которые были созданы из контейнера ранее.

Files created earlier

Удаление томов Docker

Для удаления тома мы можем выполнить docker volume rm, за которым следует имя тома, который вы хотите удалить.

> docker volume rm logdata

Теперь, если я перечислю тома, logdata уже не будет там.

Listing Docker volumes

Наконец, мы можем использовать prune, чтобы удалить все неиспользуемые локальные тома. Это удалит все тома, которые не смонтированы к работающему или остановленному контейнеру.

Inspecting the prune parameter

Вы должны быть осторожны с этой командой, поэтому есть предупреждение и запрос, чтобы убедиться, что вы уверены, что хотите это сделать. Если я наберу Y и нажму Enter, он покажет мне, какие тома были удалены.

И если я снова перечислю свои тома, вы увидите, что они все были удалены.

No Docker volumes exist

Резюме

В этом блоге вы должны были получить хороший обзор управления томами Docker в Windows. Docker – отличная платформа для контейнеров. С его поддержкой Windows и ваших новых навыков управления томами Docker вы будете непобедимы!

Source:
https://adamtheautomator.com/create-docker-volume/