Мы имеем 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
Даже при том, что это, кажется, рекомендуемый способ добавить другой каталог согласно документам и старым статьям, это должно устареть, потому что этот файл сбрасывается на каждом обновлении, и я должен вручную возвратить их. После перезапуска сервиса это хорошо работает до следующего обновления.
Эта проблема имеет, делают с systemd
файлы использования.
Как зарегистрировано в man file-hierarchy
, /lib
каталог для предоставленных поставщиками файлов только для чтения, в то время как /etc
для "определенной для системы конфигурации", которая может переопределить значение по умолчанию предоставленные поставщиками файлы в /lib
.
Корректное место для размещения модификаций находится в /etc/sytemd/system
.
Можно или полностью заменить рассматриваемый файл файлом в /etc/
или Вы используете "общедоступный" шаблон для переопределения только части файла.
Поиск man systemd.unit
для "Вклинивания сигнала" для деталей.
Файлы в /lib
продолжит перезаписываться во время обновлений пакета, в то время как изменения в /etc/
будет сохранен.
Совет о / lib по сравнению с / и т.д. обычно применяется, не только к 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
:
Если пустая строка присвоена этой опции, список команд для запуска сбрасывается, предшествующие присвоения этой опции не будут иметь никакого эффекта.