LINUX.ORG.RU
ФорумAdmin

Перенести данные docker на отдельный диск (с другой файловой системой)

 


0

1

Данные docker (образы и контейнеры) стали занимать много места и я задумался перенести их на отдельный диск.

Насколько я понимаю, я могу просто перенести /var/lib/docker на отдельный диск и сделать на него link.

С другой стороны, я читал, что BTRFS оптимальна для docker. Просто отформатировать диск под BTRFS и перенести на него файлы, скорее всего будет неправильно, так как структура данных docker зависит от файловой структуры.

В общем, как правильно перенести/пересоздать данные docker на отдельный диск с новой файловой структурой?

★★

С другой стороны, я читал, что BTRFS оптимальна для docker.

Если используешь OverlayFS, то лучше не рисковать здоровьем данных и держать их на ext4. А /var/lib/docker/ можно просто скопировать.

melkor217 ★★★★★ ()
Последнее исправление: melkor217 (всего исправлений: 2)
Ответ на: комментарий от melkor217

Да, в общем то, в самих контейнерах данных нет (они stateless). Вся ценная информация все-равно подмаплена из /opt. Так что, если и рухнет система - пересоздать контейнеры по Dockerfile не долго.

lemas ★★ ()
Ответ на: комментарий от lemas

Ну, ты хорошо живёшь :)

Просто при всех плюшках Btrfs её применимость в боевых условиях - вопрос дискуссионный.

melkor217 ★★★★★ ()
Ответ на: комментарий от lemas

Если они stateless, то

пересоздать контейнеры по Dockerfile

было бы разумнее всего

dvrts ★★★ ()
Ответ на: Если они stateless, то от dvrts

Да, но я не уверен, что если основная файловая система ext4 и даже /var смонтирован на ext4 docker пойдет, что ссылка ведет на btrfs. Но если других стандартных вариантов нет — попробую этот

lemas ★★ ()
Ответ на: комментарий от lemas

Эм.

Какое отношение имеет ФС если ты полностью с ноля разворачиваешь контейнеры?

dvrts ★★★ ()

Данные docker (образы и контейнеры) стали занимать много места и я задумался перенести их на отдельный диск

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

Если возникает желание возиться с Docker «изнутри» (и, как следствие, сохранять потом образы/данные), то это задача не для Docker, а, например, для LXC.

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

KRoN73 ★★★★★ ()
Ответ на: комментарий от lemas

Вся ценная информация все-равно подмаплена из /opt. Так что, если и рухнет система - пересоздать контейнеры по Dockerfile не долго.

Э... Тогда в чём проблема?

KRoN73 ★★★★★ ()
Ответ на: комментарий от KRoN73

а как же использование data-only контейнера с -v /foo, который будет лежать «где-то» /var/lib/docker, и абстрагироваться от файловой структуры хоста (того же /opt и т.д.)?

anton_jugatsu ★★★★ ()
Ответ на: комментарий от anton_jugatsu

Я у себя не нашел применения data-only контейнерам и просто монтирую внешние папки, как volumes.

lemas ★★ ()
Ответ на: комментарий от anton_jugatsu

а как же использование data-only контейнера

Я считаю это непонятным злом :) В смысле порождения трудностей переноса. Нафига монтировать в персистентный контейнер (который к тому же легко нечаянно грохнуть при чистке инфраструктуры Docker при работе по ID), когда можно монтировать в каталог?

и абстрагироваться от файловой структуры хоста (того же /opt и т.д.)?

С точки зрения рабочих контейнеров и монтируемый каталог — тоже абстрагирован от хоста. А с точки зрения менеджмента этих контейнеров такое абстрагирование легко будет приводить к потерям. Я бы не рисковал хранить данные в контейнерах, которые легко грохнуть по ошибке, промахнувшись с копипастом id и даже не понять этого сразу.

KRoN73 ★★★★★ ()
Ответ на: комментарий от KRoN73

Чтобы грохнуть volume надо rm с ключом -v

if you remove containers that mount volumes, including the initial dbdata container, or the subsequent containers db1 and db2, the volumes will not be deleted. To delete the volume from disk, you must explicitly call docker rm -v against the last container with a reference to the volume. This allows you to upgrade, or effectively migrate data volumes between containers.

а сам контейнер да, грохнуть можно.

anton_jugatsu ★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.