Docker ne parvient pas à démarrer s'il est configuré pour utiliser devicemapper avec direct-lvm

2

Sous Ubuntu 16.04, Docker ne parvient pas à démarrer au démarrage du système si Docker a été configuré pour utiliser devicemapper en tant que pilote de stockage avec direct-lvm en tant que pool de stockage. Les erreurs suivantes se produisent

# $ sudo systemctl status docker
● docker.service - Moteur de conteneur d'applications Docker
   Chargé: chargé (/lib/systemd/system/docker.service; activé; préréglage du fournisseur: activé)
   Actif: échoué (Résultat: code de sortie) depuis le Di 2016-07-12 16:22:33 CEST; Il y a 1min 30s
     Docs: https://docs.docker.com
  Processus: 1880 ExecStart = / usr / bin / démon docker -H fd: // $ DOCKER_OPTS (code = quitté, status = 1 / FAILURE)
 PID principal: 1880 (code = quitté, statut = 1 / ECHEC)

12 juillet 16:22:33 docker-lvm systemd [1]: Démarrage du moteur de conteneur d'application Docker ...  
Docker-lvm docker [1880]: time = "2016-07-12T16: 22: 33.304838820 + 02: 00" level = fatal msg = "Erreur lors du démarrage du démon: erreur lors de l'initialisation de graphdriver: devicemapper: Non existant périphérique ubuntu - vg-thinpool "  
12 juillet 16:22:33 docker-lvm systemd [1]: docker.service: processus principal abandonné, code = abandonné, statut = 1 / FAILURE  
12 juillet 16:22:33 docker-lvm systemd [1]: Impossible de démarrer le moteur de conteneur d'application Docker.  
12 juillet 16:22:33 docker-lvm systemd [1]: docker.service: l'unité est entrée en état d'échec.  
12 juillet 16:22:33 docker-lvm systemd [1]: docker.service: échec avec le résultat 'code de sortie'.  
12 juillet 16:22:33 docker-lvm systemd [1]: docker.service: la demande de démarrage a été répétée trop rapidement.  
12 juillet 16:22:33 docker-lvm systemd [1]: Impossible de démarrer le moteur de conteneur d'applications Docker. 
smoe
la source

Réponses:

3

Les messages d'état ont indiqué que mon thinpool n'était pas disponible. lvdisplaydit la même chose:

# $ sudo lvdisplay ubuntu-vg / thinpool
  --- Volume logique ---
  Nom LV Thinpool
  Nom VG ubuntu-vg
  UUID LV ou2cLx-ENFq-sZqh-kxUw-0FEQ-rEzi-vXCi3C
  Accès en écriture LV en lecture / écriture
  Hôte LV Creation, heure de docker-lvm, 2016-07-12 15:57:06 +0200
  Métadonnées de piscine LV thinpool_tmeta
  Données du pool LV thinpool_tdata
  Statut LV non disponible
  Taille LV 14,07 Gio
  LE 3601 actuel
  Segments 1
  Allocation hériter
  Lire à l'avance les secteurs auto

Remarque: LV Status NOT available

Essayer de l'activer dit:

# $ sudo lvchange -ay ubuntu-vg / thinpool
  / usr / sbin / thin_check: execvp a échoué: aucun fichier ou répertoire de ce type
  La vérification du pool ubuntu-vg / thinpool a échoué (statut: 2). Réparation manuelle requise!

Les outils pour thinpools sont configurés /etc/lvm/lvm.confet j'ai trouvé le paragraphe suivant:

    # Configuration option global/thin_check_executable.
    # The full path to the thin_check command.
    # LVM uses this command to check that a thin metadata device is in a
    # usable state. When a thin pool is activated and after it is
    # deactivated, this command is run. Activation will only proceed if
    # the command has an exit status of 0. Set to "" to skip this check.
    # (Not recommended.) Also see thin_check_options.
    # (See package device-mapper-persistent-data or thin-provisioning-tools)
    # This configuration option has an automatic default value.
    # thin_check_executable = "/usr/sbin/thin_check"

J'ai jeté un coup d'œil aux paquets mentionnés et j'ai découvert que le paquet thin-provisioning-tools est disponible mais pas installé.

# $ sudo apt-cache policy outils de provisionnement fin
Thin Provisioning Tools:
  Installé: (aucun)
  Candidat: 0.5.6-1ubuntu1
  Tableau de version:
     0.5.6-1ubuntu1 500
        500 http://de.archive.ubuntu.com/ubuntu xenial / universe amd64 Packages

Après l’installation du paquet, les utils pour les thinpools étaient disponibles. L'activation manuelle du docker-thinpool a réussi et le volume a également été activé au démarrage du système et le docker a bien démarré.

smoe
la source
Ayant moi-même ce problème de démarrage ... pour les utilisateurs de CentOS 7, cet exécutable se trouve dans le device-mapper-persistent-dataRPM.
Aaron D. Marasco