Как изменить каталог данных Docker по умолчанию?

Нехватка дискового пространства – одна из самых распространенных проблем, с которыми сталкиваются пользователи. При использовании контейнерных сервисов Docker достижение этой точки означает, что ваши развертывания перестанут работать. Это происходит по одной простой причине – ваша Linux-система становится неспособной выполнять дальнейшие операции записи на диск.

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

Чтобы прояснить ситуацию, рассмотрим следующее: наш диск заполнен на 99%, что может привести к неработоспособности всей нашей Linux-системы. Мы добавили новый диск объемом 100 ГБ, чтобы справиться с этой неприятной ситуацией, и смонтировали его как каталог «/data» в нашей файловой системе.

Мы планируем переместить все ресурсы Docker в это место, что позволит освободить значительное пространство на корневом разделе «/». Это позволит обеспечить бесперебойную работу не только Docker, но и всей нашей Linux-системы в целом.

Шаг 1: Остановите службу Docker

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

sudo systemctl stop docker.service
sudo systemctl stop docker.socketCode language: Bash (bash)

Конечно, помните, что это приведет к остановке всех ваших контейнеров Docker, поэтому простои неизбежны.

Шаг 2: Переместите каталог данных Docker

Docker хранит все свои данные в каталоге по умолчанию, включая образы, контейнеры, тома и сети. В большинстве Linux-систем это обычно «/var/lib/docker» Хотя это хорошо подходит для начальной установки, с ростом числа проектов растут и данные.

Поэтому следующим шагом будет перемещение существующего каталога Docker в новое место с большим объемом дискового пространства, которым в нашем случае является каталог «/data». Давайте сначала создадим для него подкаталог, например «docker», куда мы планируем перенести и хранить наши данные Docker в дальнейшем.

sudo mkdir /data/docker

Пора приступать к действиям. Хотя вы можете использовать рекурсивную команду cp или даже mv для передачи данных, мы не советуем этого делать. Вместо этого самым безопасным и надежным методом является команда rsync. Если она еще не доступна в вашем дистрибутиве Linux, вы можете легко добавить ее, установив пакет «rsync» через менеджер пакетов

Чтобы скопировать все данные из каталога «/var/lib/docker» в каталог «/data/docker», выполним следующую команду, поскольку первый аргумент – исходный каталог, а второй – конечный.

sudo rsync -aP /var/lib/docker/ /data/docker/

Итак, что делает эта команда? Опция -a (режим архивации) позволяет рекурсивно копировать файлы с сохранением всех символических ссылок, разрешений на файлы, прав собственности пользователей и групп, а также временных меток. Опция -P сохраняет частично переданные файлы, если передача прерывается. Она также показывает прогресс передачи для каждого копируемого файла.

Шаг 3: Обновление конфигурации Docker

После копирования данных необходимо указать Docker, где найти их новый дом. Это можно сделать, отредактировав специальный файл конфигурации Docker, «daemon.json», в каталоге «/etc/docker».

Обратите внимание, что при установке Docker этот файл не создается автоматически, поэтому, если вы не выполняли никаких ручных настроек, вполне возможно, что он будет отсутствовать. В этом случае создайте его и поместите фрагмент кода ниже. Конечно, не забудьте заменить «/new/docker/root» на путь к файловой системе, соответствующий вашей установке.

sudo nano /etc/docker/daemon.json
{ 
   "data-root": "/new/docker/root"
}

Наконец, сохраните файл и выйдите.

Шаг 4: Запуск Docker

Итак, момент истины. Запустите службу Docker:

sudo systemctl start docker.socket
sudo systemctl start docker.service

Убедитесь, что служба Docker запустилась без проблем и полностью готова к работе.

sudo systemctl status docker

Наконец, убедитесь, что Docker использует каталог, указанный нами для хранения данных, по умолчанию:

sudo docker info | grep "Docker Root Dir"

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

После установки

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

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

sudo rm -rf /var/lib/docker/

Заключение

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

Мы также хотим отметить, что вы можете модифицировать Docker-сервис systemd для достижения того же результата вместо изменения файла «daemon.json». Однако мы считаем этот подход обходным путем, а не правильным решением, и не рекомендуем его, поэтому не рассматриваем в нашем руководстве.

За более подробной информацией о настройке Docker с помощью файла «daemon.json» обращайтесь к официальной документации.

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

Зарубин Иван Эксперт по Linux и Windows

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

Вдохновлен linuxiac.com

Похожие статьи

Комментарии (0)