Переместить данные Docker (образы и контейнеры) на отдельный диск с другой ФС

Переместить данные Docker (образы и контейнеры) на отдельный диск с другой ФС

Я планирую переместить данные Docker (образы и контейнеры) на отдельный диск, так как они занимают много места.

Насколько я знаю, я могу переместить его /var/lib/dockerна отдельный диск и создать на него мягкую ссылку. Но я читал, что BTRFS — лучший вариант файловой системы для docker.

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

Как правильно переместить (пересоздать) папку Docker (образы и контейнеры) на внешний диск с другой файловой системой?

решение1

Как вы сказали, простое перемещение или копирование образов/контейнеров docker с диска AUFS по умолчанию на диск, отформатированный в BTRFS, не сработает. Поэтому в качестве первого шага вы можете зафиксировать все свои контейнеры как образы и использовать docker saveкоманды для сохранения образов в виде файлов .tar, а затем, как только вы подготовите docker к использованию btrfs, вы запустите docker loadзагрузку образов в новый драйвер хранилища.

Шаги будут примерно следующими - это то, что я сделал на своем компьютере с Ubuntu 14.10 -

  • Сохраните ваши изображения
    docker save IMAGEID > /tmp/redis.tar
  • Подготовка btrfs
mkfs.btrfs /dev/sdb
 mkdir /var/lib/docker-btrfs
 монтируем /dev/sdb /var/lib/docker-btrfs/
  • Остановите Docker, настройте Docker на использование BTRFS и запустите его.
остановка сервисного докера
docker -d -s btrfs --graph="/var/lib/docker-btrfs" -H unix:///var/run/docker.sock

Вышеуказанный шаг также можно выполнить, изменив /etc/default/docker.

  • Загрузите изображения.
загрузка докера --input /tmp/redis.tar

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

Связанный контент