Я хочу развернуть докер на сервере, но хочу, чтобы все данные, связанные с докером, находились в отдельном разделе от базовой системы. Таким образом, я смонтировал указанный раздел в '/ 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
читает свои переопределения конфигурации, значение необходимо сначала определить с пустым значением, а затем переназначить новому значению.
Как только я это сделал, демон благополучно запустился, и я наконец смог его использовать.