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

8

Как я могу изменить каталог данных Docker, где docker сохраняет контейнер (или где lxc сохраняет контейнер)? На моем сервере есть ssd и жесткий диск, и я хочу, чтобы контейнер был сохранен на жестком диске. Спасибо

ssd_rider
источник

Ответы:

11

Я считаю, что в этом руководстве у вас будет хорошее объяснение.

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

Ubuntu / Debian: отредактируйте ваш /etc/default/dockerфайл с -gопцией:DOCKER_OPTS="-dns 8.8.8.8 -dns 8.8.4.4 -g /mnt"

Fedora / Centos: отредактируйте /etc/sysconfig/dockerи добавьте -gопцию в переменную other_args: ex. other_args="-g /var/lib/testdir", Если есть несколько вариантов, убедитесь, что вы заключили их в "". После перезапуска (перезапуск службы Docker) Docker должен использовать новый каталог.

Использование символической ссылки - это еще один способ изменить хранилище изображений.

Внимание. Эти шаги зависят от того, является ли текущий каталог / var / lib / docker действительным каталогом (а не символической ссылкой на другое местоположение).

1) Стоп докер service docker stop. Убедитесь, что процесс docker не запущен ps faux

2) Докер двойной проверки действительно не работает. Взгляните на текущий каталог докеров: ls/var/lib/docker/

2б) Сделать резервную копию - tar -zcC /var/lib docker > /mnt/pd0/var_lib_docker-backup-$(date +%s).tar.gz

3) Переместите /var/lib/dockerкаталог в новый раздел:mv /var/lib/docker /mnt/pd0/docker

4) Сделать символическую ссылку: ln -s /mnt/pd0/docker /var/lib/docker

5) Взгляните на структуру каталогов, чтобы убедиться, что она выглядит так же, как и до mv: ls /var/lib/docker/(обратите внимание на косую черту в

6) Запустите докер обратно service docker start

7) перезапустите ваши контейнеры, разрешите символическую ссылку)

Конрадо Фонсека
источник
в чем причина 4)? Это нужно? В моем случае я хотел бы, чтобы файлы Docker находились на смонтированном RAID, а не в загрузочном разделе.
Роман Мик
9

В более поздних версиях Docker в Ubuntu вы будете редактировать /etc/default/daemon.json следующим образом:

{
    "data-root": "/new/location"
}
MattK
источник
2

Для изменения dataкаталога в dockerнем необходимо запустить опцию -g /my/data. По моему /etc/default/dockerя установил:

DOCKER_OPTS="-g /srv/docker"

Смотрите также мои заметки здесь .

Чтобы изменить dataкаталог, lxcя вставил /etc/lxc/lxc.conf:

lxc.lxcpath = /srv/lxc

Стюарт Кардалл
источник
1

Обновление до Docker 1.13.0.

Из примечаний к выпуску:

- New
The storage location of the Linux volume can now be moved
Snowcrash
источник
1

Чтобы расширить ответ @ MattK:

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

отредактируйте файл /etc/docker/daemon.json, чтобы он содержал строку

{
    "data-root": "/mnt/docker-data",
    (...)
}

где /mnt/docker-dataнаходится каталог, в котором вы хотите разместить образы и контейнеры докера.

затем

sudo systemctl restart docker

Вы можете проверить, работает ли это, запустив

docker info

и ищите содержимое строки, начинающейся с Docker Root Dir:.

См. Также https://stackoverflow.com/a/50217666/2209313 и https://unix.stackexchange.com/q/452368/36043 .

Блуждающая логика
источник