Je souhaite déployer docker sur un serveur, mais je souhaite que toutes les données liées à docker se trouvent dans une partition distincte du système de base. J'ai donc monté ladite partition sur '/srv' et effectué les modifications suivantes, selon la documentation officielle :

Voici mon fichier '/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

Il s'agit du fichier '/srv/docker/docker.conf' qui est référencé dans le fichier 'docker.service' :

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

Le démon docker démarre correctement et extrait également les images. Le problème est qu'il ne stocke toujours rien dans le répertoire '/srv/docker'.

Aussi, quand je lance 'ps -aux | grep docker', ce que j'obtiens est ceci :

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

La ligne de commande s'arrête à 'fd://'. Il me semble que '$OPTIONS' est négligé pour une raison ou une autre.

Maintenant, y a-t-il un problème avec la façon dont je référence les fichiers ? Y a-t-il autre chose qui se passe ici? La raison pour laquelle je fais toutes ces modifications de configuration est que je voudrais vraiment conserver toutes les données liées au docker dans le répertoire '/srv/docker/'.

Des idées?

MISE À JOUR 1 :

J'ai modifié mon fichier 'docker.conf', comme suggéré dans la section des réponses. Maintenant:

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

devenu:

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

Cela a eu pour conséquence (inattendue) que le démon docker ne démarre pas. Voici le message de débogage de 'systemctl status docker' :

[ [email protected] ~]# systemctl status docker ● docker.service - Moteur de conteneur d'applications Docker chargé : chargé (/usr/lib/systemd/system/docker.service ; activé ; préréglage du fournisseur : désactivé) Actif : échec (résultat : quitter -code) depuis le jeu 2015-02-05 20:13:31 EET ; il y a 14s Docs : http://docs.docker.com Processus : 776 ExecStart=/usr/bin/docker -d -H fd:// $OPTIONS (code=exited, status=2) PID principal : 776 (code= sorti, état=2)

answer

Vous avez une erreur dans votre /srv/docker/docker.conffichier.

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

La spécification d'une variable ne doit pas commencer par un $ ; le $ ne doit être utilisé que lors de l'utilisation ultérieure de la variable.

Remplacez-le par :

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

Tout d'abord, je tiens à remercier @MichaelHampton pour sa réponse. C'était sur place, et je n'aurais jamais repéré la faute de frappe avec le '$' ('OPTIONS=...' au lieu de '$OPTIONS=...').

Maintenant, le problème était avec les options de la ligne de commande. Dans la documentation docker, l'argument pour changer le pilote de stockage est donné comme suit :

--storage btrfs

Gardez à l'esprit qu'il s'agit de la documentation de la version 1.4, qui est la version que j'ai. Hélas, la syntaxe correcte, comme en témoigne 'docker --help' est :

--storage-driver btrfs

Ainsi, après avoir effectué les modifications nécessaires, le démon démarre correctement, les images sont extraites dans le répertoire '/srv/docker' et tout va bien.

La morale est de toujours se méfier un peu des documentations officielles, surtout pour les projets en fort développement, comme Docker. Encore merci à tous pour leurs contributions.

Au début, j'ai passé pas mal de temps à jouer avec le précédent script d'initialisation upstart/sysv /etc/init.d/dockeret son fichier de configuration /etc/default/docker. C'était vraiment étrange que cela ne fonctionne tout simplement pas, peu importe ce que j'ai essayé, puis j'ai finalement réalisé que cela ignorait systemdsimplement les deux, car j'utilisais directement le script hérité.

La solution proposée ne semble pas fonctionner à 100% sur mon 15,04 avec lxc-docker-1.7.0installé à partir du docker officiel PPA, puisque le EnvironmentFilesemble manquer de mon dockerdu systemdfichier de configuration.

Une option serait de le modifier sur place et de l'ajouter à l'aide de cette commande :

sudo systemctl edit docker --full

Mais cela risque d'être annulé par la prochaine mise à jour, ma solution a donc été de créer à la place un remplacement, en exécutant

sudo systemctl edit docker

Ensuite, j'ai décidé de simplement redéfinir la ExecStartcommande dans le nouveau remplacement de configuration, au lieu d'ajouter et de référencer également un nouveau fichier de configuration sous /srv/docker/docker.conf.

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

Il n'y a pas d'erreur dans l'extrait ci-dessus, pour une raison étrange liée à la façon dont systemdlit ses remplacements de configuration, une valeur doit d'abord être définie avec une valeur vide, puis réaffectée à la nouvelle valeur.

Une fois que j'ai fait cela, le démon a démarré avec bonheur et j'ai finalement pu l'utiliser.