Назад | Перейти на главную страницу

Docker (systemd) игнорирует изменение каталога по умолчанию (docker.service)

Я хочу развернуть докер на сервере, но хочу, чтобы все данные, связанные с докером, находились в отдельном разделе от базовой системы. Таким образом, я смонтировал указанный раздел в '/ srv' и внес следующие изменения в соответствии с официальный документация:

Это мое '/usr/lib/systemd/system/docker.service' файл:

[Unit]
Description=Docker Application Container Engine
Documentation=http://docs.docker.com
After=network.target docker.socket
Requires=docker.socket

[Service]
Type=notify
EnvironmentFile=-/srv/docker/docker.conf
ExecStart=/usr/bin/docker -d -H fd:// $OPTIONS
LimitNOFILE=1048576
LimitNPROC=1048576

[Install]
Also=docker.socket
WantedBy=multi-user.target

Это '/srv/docker/docker.conf' файл, на который есть ссылка в файле docker.service:

$OPTIONS="--graph /srv/docker --storage btrfs"

Демон докера запускается правильно, а также вытягивает изображения. Проблема в том, что он по-прежнему ничего не хранит в каталоге '/ srv / docker'.

Кроме того, когда я запускаю 'ps -aux | grep docker ', я получаю следующее:

root       661  0.4  0.2 351080 17044 ?        Ssl  19:33   0:00 /usr/bin/docker -d -H fd://

Командная строка заканчивается на «fd: //». Мне кажется, что «$ OPTIONS» по той или иной причине упускается из виду.

Есть ли проблема со способом ссылки на файлы? Здесь что-то еще происходит? Причина, по которой я делаю все эти изменения конфигурации, заключается в том, что я действительно хотел бы хранить все данные, связанные с докерами, в каталоге '/ srv / docker /'.

Любые идеи?

ОБНОВЛЕНИЕ 1:

Я изменил свой файл docker.conf, как было предложено в разделе ответов. Сейчас:

$OPTIONS="--graph /srv/docker --storage btrfs"

стал:

OPTIONS="--graph /srv/docker --storage btrfs"

Это имело (неожиданные) последствия того, что демон докера не запускался. Это сообщение об отладке от "systemctl status docker":

[root @ V12 ~] # docker состояния systemctl ● docker.service - Движок контейнера приложения Docker загружен: загружен (/usr/lib/systemd/system/docker.service; включен; предустановка поставщика: отключен) Активен: сбой (Результат: выход -код) с Thu 2015-02-05 20:13:31 EET; 14с назад Документы: http://docs.docker.com Процесс: 776 ExecStart = / usr / bin / docker -d -H fd: // $ OPTIONS (code = exited, status = 2) Главный PID: 776 (code = exited, status = 2)

Прежде всего, я хочу поблагодарить @MichaelHampton за его ответ. Это было правильно, и я бы никогда не заметил опечатку с '$' ('OPTIONS = ...' вместо '$ OPTIONS = ...').

Теперь проблема заключалась в параметрах командной строки. В документации докера аргумент для изменения драйвера хранилища приводится как:

--storage btrfs

Имейте в виду, что это документация для версии 1.4, которая у меня есть. Увы, правильный синтаксис, о чем свидетельствует docker --help:

--storage-driver btrfs

Итак, после внесения необходимых изменений, демон запускается правильно, изображения вытягиваются внутри каталога '/ srv / docker', и все в порядке.

Мораль - всегда немного недоверчиво относиться к официальной документации, особенно для проектов, находящихся в стадии разработки, таких как Docker. Еще раз спасибо всем за их вклад.

У вас ошибка в вашем /srv/docker/docker.conf файл.

$OPTIONS="--graph /srv/docker --storage btrfs"

Спецификация переменной не должна начинаться с символа $; символ $ следует использовать только при использовании переменной позже.

Измените его на:

OPTIONS="--graph /srv/docker --storage btrfs"

Сначала я потратил довольно много времени на то, чтобы возиться с предыдущим скриптом выскочки / sysv из /etc/init.d/docker и его файл конфигурации /etc/default/docker. Было действительно странно, что это просто не работало, что бы я ни пробовал, но в конце концов я понял, что systemd просто игнорирует оба из них, поскольку я напрямую использовал устаревший скрипт.

Предлагаемое решение, похоже, не работает на 100% на моем 15.04 с lxc-docker-1.7.0 устанавливается из официального Docker PPA, так как EnvironmentFile кажется, отсутствует в моем dockerс systemd Файл конфигурации.

Можно было бы отредактировать его на месте и добавить с помощью этой команды:

sudo systemctl edit docker --full

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

sudo systemctl edit docker

Тогда я решил просто переопределить ExecStart в новом переопределении конфигурации вместо добавления и ссылки на новый файл конфигурации в /srv/docker/docker.conf.

[Service]
ExecStart=
ExecStart=/usr/bin/docker -d -H fd:// --storage btrfs

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

Как только я это сделал, демон благополучно запустился, и я наконец смог его использовать.