Поиск по сайту:

Как хранить образы и контейнеры Docker на внешнем диске


Docker хранит загруженные образы, запущенные контейнеры и данные постоянных томов в едином общем корневом каталоге на системном диске. Вы можете настроить свою конфигурацию для использования внешнего диска, общего сетевого ресурса или второго внутреннего диска, если вам нужно добавить хранилище к вашей установке.

Подготовка

Основная часть этого руководства относится к Docker Engine для Linux и Docker Desktop для Windows и Mac. Вам нужно будет найти файл Docker daemon.json на всех трех платформах. Это будет в одном из следующих мест:

  • /etc/docker/daemon.json в Linux.
  • %programdata%\docker\config\daemon.json в Windows.
  • ~/Library/Containers/com.docker.docker/Data/database/com.docker.driver.amd64-linux/etc/docker/daemon.json на Mac.

Docker рекомендует пользователям Windows и Mac обновлять файл конфигурации через пользовательский интерфейс, а не вносить изменения вручную в текстовом редакторе. Вы можете получить доступ к экрану настроек, выбрав «Настройки» > «Docker Engine» > «Редактировать файл» в интерфейсе Docker Desktop.

Изменение каталога данных

Расположение каталога данных Docker контролируется настройкой data-root в вашем файле конфигурации. В старых версиях Docker, выпущенных до 17.06, вместо этого использовался graph. Вы можете проверить версию, которую вы получили, выполнив команду docker version.

$ docker version
...
Server: Docker Engine - Community
  Engine:
    Version: 20.10.17

Найдите или добавьте соответствующий ключ в файле конфигурации. Установите желаемый путь к каталогу в качестве его значения. Вот пример Linux, который будет хранить данные Docker на внешнем диске, смонтированном в файловой системе:

{
    "data-root": "/mnt/docker-data"
}

Вы должны перезапустить демон Docker после внесения изменений:

$ sudo service docker restart

Docker Desktop можно перезапустить в Windows и Mac, выйдя из него и запустив новый экземпляр.

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

$ sudo rsync -aSv /var/lib/docker/ /mnt/docker-data

Изменение каталога данных без перезагрузки

Вы можете переместить каталог данных без перезапуска демона, создав символическую ссылку из /var/lib/docker на новое место. Это может быть полезно, если вам не хватает места на хосте, где незапланированный перезапуск службы Docker невозможен.

Скопируйте существующие данные Docker в новый каталог:

$ sudo rsync -aSv /var/lib/docker/ /mnt/docker-data

Затем создайте символическую ссылку, которая разрешает /var/lib/docker в целевое местоположение:

$ sudo ln -s /mnt/docker-data/ /var/lib/docker

Не используйте этот метод для рабочих нагрузок, которые быстро изменяют данные файловой системы. Существует риск возникновения несоответствий, если данные записываются во время между копированием существующего каталога и созданием символической ссылки.

Что на самом деле меняется?

Изменение корневого каталога Docker влияет на все различные типы данных, которые хранит демон. Сюда входят ваши образы, контейнеры, установленные плагины, конфигурация Swarm и тома, а также кеш сборки Docker.

Изменение пути запишет все эти данные в ваше новое местоположение. Вы не можете выборочно перемещать определенные типы в отдельные точки монтирования. Это означает, что важно выбрать место хранения, которое обеспечит хорошую общую производительность. Использование медленного внешнего диска может снизить скорость отклика операций интерфейса командной строки docker, даже если он подходит для определенных типов данных, таких как долгосрочное хранение изображений.

В отсутствие поддержки путей данных для каждого типа сокращение неиспользуемых ресурсов может быть лучшим способом управления требованиями Docker к хранилищу. Вместо того, чтобы выделять Docker больше места, очистите избыточные активы и поместите неиспользуемые образы в отдельный центральный реестр. Это может освободить значительное место на вашем хосте.

Однократное использование другого каталога данных

Вы можете вручную запустить Docker Engine с определенным каталогом данных, передав флаг --data-root при запуске демона. Это можно использовать для переключения между каталогами данных или запуска чистого экземпляра без существующих данных.

$ sudo /usr/bin/dockerd --data-root /mnt/docker-data

Флаг переопределит путь к каталогу, указанный в файле daemon.json. Сконфигурированный каталог останется нетронутым, поэтому вы сможете вернуться к этому экземпляру в будущем.

Краткое содержание

Docker хранит все свои данные, включая созданные и извлеченные образы, созданные контейнеры и тома, в одном дереве каталогов. Обычно это /var/lib/docker, но вы можете настроить его, добавив параметр в файл конфигурации или указав флаг --data-root при запуске демон.

Изменение каталога данных означает, что ваши существующие данные не появятся в Docker, если вы не скопируете их по новому пути. Вы можете использовать эту функцию для поддержки нескольких независимых репозиториев хранилища Docker, например, одного для личных проектов и другого для работы. Вам нужно будет перезапустить демона, прежде чем переключать контексты, поскольку одновременно может работать только один экземпляр.




Все права защищены. © Linux-Console.net • 2019-2024