Je suis en cours d'exécution 16.04 (distro = Ubuntu 16.04.1 LTS
et noyau = 4.4.0-45-generic
) et installé docker par la capture de docker.
snap install docker
et voici ma liste instantanée.
# snap list
Name Version Rev Developer Notes
docker 1.11.2-9 56 canonical -
snapstore-example 0.3 4 noise -
ubuntu-core 16.04.1 423 canonical -
mais je n'ai pas pu démarrer le démon docker. ce que j'ai fait
systemctl start snap.docker.dockerd.service
Le journal des erreurs semble être avec permission.
Nov 30 00:54:20 ubuntu-xenial systemd[1]: Started Service for snap application docker.dockerd.
Nov 30 00:54:20 ubuntu-xenial snap[19148]: grep: /proc/self/mountinfo: Permission denied
Nov 30 00:54:20 ubuntu-xenial snap[19148]: time="2016-11-30T00:54:20.708894420Z" level=fatal msg="can't create unix socket /var/run/docker.sock: permission denied"
Nov 30 00:54:20 ubuntu-xenial systemd[1]: snap.docker.dockerd.service: Main process exited, code=exited, status=1/FAILURE
Nov 30 00:54:20 ubuntu-xenial systemd[1]: snap.docker.dockerd.service: Unit entered failed state.
Nov 30 00:54:20 ubuntu-xenial systemd[1]: snap.docker.dockerd.service: Failed with result 'exit-code'.
Nov 30 00:54:20 ubuntu-xenial systemd[1]: snap.docker.dockerd.service: Service hold-off time over, scheduling restart.
Nov 30 00:54:20 ubuntu-xenial systemd[1]: Stopped Service for snap application docker.dockerd.
Nov 30 00:54:20 ubuntu-xenial systemd[1]: snap.docker.dockerd.service: Start request repeated too quickly.
Nov 30 00:54:20 ubuntu-xenial systemd[1]: Failed to start Service for snap application docker.dockerd.
et cette erreur pour être plus spécifique.
Nov 30 00:54:20 ubuntu-xenial snap[19148]: time="2016-11-30T00:54:20.708894420Z" level=fatal msg="can't create unix socket /var/run/docker.sock: permission denied"
tandis que si je fais apt-get install docker.io
et essaie de démarrer docker.service avec systemctl start docker.service
. ça a bien fonctionné.
un problème connu avec le docker snap? ou ai-je manqué une étape. Merci!
après un premier dépannage. J'ai pu trouver le RC moi-même. il semble qu'apparmor ait bloqué à la fois grep: /proc/self/mountinfo
et la création d'un socket dans /var/run/docker.sock
syslog.1:Nov 30 02:18:27 ubuntu-xenial kernel: [ 5359.923039] audit: type=1400 audit(1480472307.476:349): apparmor="DENIED" operation="open" profile="snap.docker.dockerd" name="/proc/19448/mountinfo" pid=19448 comm="umount" requested_mask="r" denied_mask="r" fsuid=0 ouid=0
syslog.1:Nov 30 02:18:27 ubuntu-xenial kernel: [ 5359.923053] audit: type=1400 audit(1480472307.476:350): apparmor="DENIED" operation="open" profile="snap.docker.dockerd" name="/proc/19448/mounts" pid=19448 comm="umount" requested_mask="r" denied_mask="r" fsuid=0 ouid=0
syslog.1:Nov 30 02:38:28 ubuntu-xenial kernel: [ 6560.900141] audit: type=1400 audit(1480473508.452:362): apparmor="DENIED" operation="connect" profile="snap.docker.docker" name="/run/docker.sock" pid=20591 comm="docker" requested_mask="wr" denied_mask="wr" fsuid=0 ouid=0
Mais pourquoi est-ce. pourquoi 16.04 a reçu le profil par défaut apparmor (dans /var/lib/snapd/apparmor/profiles/snap.docker.docker
) qui empêcherait le démon dockerd de démarrer.
Je pense que vous utilisez snapd 2.16ubuntu3, qui est actuellement disponible dans 16.04. Vous pouvez vérifier avec:
$ apt-cache policy snapd
Si tel est le cas, le problème est que les interfaces du menu fixe ne sont pas connectées lors de l'installation. Par défaut, certaines des interfaces de capture pour docker ne se connectent pas automatiquement, mais les déclarations de capture du magasin peuvent être utilisées pour les connecter automatiquement. Nous avons des déclarations instantanées pour que docker connecte automatiquement les interfaces, mais 2.16ubuntu3 ne sait pas encore comment les utiliser. Vous avez deux choix:
installez le snapd de xenial-proposé: https://launchpad.net/ubuntu/+source/snapd/2.17.1ubuntu1
connecter manuellement les interfaces. Par exemple:
$ snap interfaces |grep docker # show the disconnected interfaces
docker:docker-daemon -
:docker-support -
:home docker
:network docker
:network-bind docker
- docker:docker-cli
- docker:firewall-control
- docker:privileged
- docker:support
# connect the interfaces
$ Sudo snap connect docker:support ubuntu-core:docker-support
$ Sudo snap connect docker:firewall-control ubuntu-core:firewall-control
$ Sudo snap connect docker:docker-cli docker:docker-daemon
$ snap interfaces | grep docker # show the connected interfaces
docker:docker-daemon docker:docker-cli
:docker-support docker:support
:firewall-control docker
:home docker
:network docker
:network-bind docker
- docker:privileged
# restart the daemon
$ Sudo service snap.docker.dockerd stop
$ Sudo service snap.docker.dockerd start
# verify it worked
$ Sudo docker info
Containers: 0
Running: 0
Paused: 0
Stopped: 0
...
Si vous souhaitez utiliser des conteneurs à privilèges Docker, connectez cette interface avec:
$ Sudo snap connect docker:privileged ubuntu-core:docker-support
Si vous ne souhaitez pas utiliser 'Sudo', créez le groupe de dockers et ajoutez-y vous-même:
$ Sudo addgroup docker
$ Sudo adduser `id -un` docker
$ newgrp docker
# restart docker so it will make the socket group writable by 'docker'
$ Sudo service snap.docker.dockerd stop
$ Sudo service snap.docker.dockerd start
$ docker info
Containers: 0
Running: 0
Paused: 0
Stopped: 0
...
Vous pouvez obtenir plus d'informations sur les interfaces Snappy ici: https://github.com/snapcore/snapd/wiki/Interfaces
Comme mentionné, les commandes 'snap connect' ne seront plus nécessaires dès que snapd 2.17 ou version ultérieure sera installé. Il est également prévu sur la feuille de route de prendre en charge de manière native les groupes du système afin que vous n'ayez pas à ajouter le groupe au système vous-même.