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

Мы имеем docker-ce работа некоторой Ubuntu 16.04 машины LTS. Машины имеют быстрый SSD для ОС и массив ZFS для тяжелых данных как контейнеры докера.

Каждый раз, когда я ввожусь для фиксации установки докера, кажется, что обновление сбросило конфигурацию для использования массива ZFS, поскольку это - данные.

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

В /lib/systemd/system/docker.service, добавить -g "/mnt/var/lib/docker" как так:

ExecStart=/usr/bin/dockerd -g "/mnt/var/lib/docker" -H fd://

Также отложите запуск сервиса, пока массив ZFS не будет онлайн:

[Unit]
After=network.target docker.socket firewalld.service zfs-mount.service

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

Что надлежащий путь состоит в том, чтобы внести эти изменения засунуть, в то время как пакет обновляется?

0
задан 12 March 2018 в 10:09

1 ответ

Эта проблема имеет, делают с systemd файлы использования.

Как зарегистрировано в man file-hierarchy, /lib каталог для предоставленных поставщиками файлов только для чтения, в то время как /etc для "определенной для системы конфигурации", которая может переопределить значение по умолчанию предоставленные поставщиками файлы в /lib.

Корректное место для размещения модификаций находится в /etc/sytemd/system.

Можно или полностью заменить рассматриваемый файл файлом в /etc/ или Вы используете "общедоступный" шаблон для переопределения только части файла.

Поиск man systemd.unit для "Вклинивания сигнала" для деталей.

Файлы в /lib продолжит перезаписываться во время обновлений пакета, в то время как изменения в /etc/ будет сохранен.

Совет о / lib по сравнению с / и т.д. обычно применяется, не только к systemd.

пример единицы вклинивания сигнала systemd

В /etc/systemd/system/docker.service.d/10-fix-execstart.conf:

[Service]
ExecStart=
ExecStart=/usr/bin/dockerd -g "/mnt/var/lib/docker" -H fd://

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

От man systemd.service:

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

1
ответ дан 30 October 2019 в 06:57

Другие вопросы по тегам:

Похожие вопросы: