не удалось запустить dockerd после установки докера со снимком

Я работаю 16.04 (дистрибутив =Ubuntu 16.04.1 LTS и ядро =4.4.0-45-generic) и установленный докер снимком докера.

snap install docker

и вот мой поспешный список.

# 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  -

но я не смог запустить демона докера. что я сделал

systemctl start snap.docker.dockerd.service

Журнал ошибок, кажется, с разрешением.

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.

и эта ошибка быть более конкретным.

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"

в то время как, если я делаю apt-get install docker.io и попытайтесь запустить docker.service с systemctl start docker.service. это работало хорошо.

какая-либо известная проблема со снимком докера? или я пропускал какой-либо шаг.спасибо!

3
задан 30 November 2016 в 04:53

3 ответа

после некоторого начального поиска и устранения неисправностей. я смог найти RC сам. кажется apparmor, заблокированным и grep: /proc/self/mountinfo и создающий сокет в /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

, Но почему это. почему 16.04 получил значение по умолчанию apparmor поставленный профиль (в /var/lib/snapd/apparmor/profiles/snap.docker.docker), который заблокирует dockerd демона от запуска.

1
ответ дан 1 December 2019 в 16:56

Я подозреваю, что Вы выполняете snapd 2.16ubuntu3, который является тем, что в настоящее время доступно в 16,04. Можно проверить с:

$ apt-cache policy snapd

, Если это так, проблема состоит в том, что докер взаимодействует через интерфейс, не соединены на установке. По умолчанию некоторые мгновенные интерфейсы для докера не автосоединяются, но привязываются, объявления от хранилища могут использоваться для автосоединения их. У нас есть поспешные объявления для докера для автосоединения интерфейсов, но 2.16ubuntu3 не знает, как использовать их все же. У Вас есть два варианта:

  1. устанавливают snapd от гостеприимно предложенного: https://launchpad.net/ubuntu / + source/snapd/2.17.1ubuntu1

  2. вручную соединяют интерфейсы. Например:

$ 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
...

, Если Вы хотите использовать докера, дал контейнерам полномочия, затем соедините тот интерфейс с:

$ sudo snap connect docker:privileged ubuntu-core:docker-support

, Если Вы не хотите использовать 'sudo', затем создайте группу докера и добавьте себя к нему:

$ 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
...

можно получить больше информации о мгновенных интерфейсах здесь: https://github.com/snapcore/snapd/wiki/Interfaces

, Как упомянуто, 'поспешное подключение' команды не будет требоваться, как только snapd 2.17 или выше установлен. Это находится также на дорожной карте группам системы поддержки исходно, таким образом, Вы не должны будете добавлять группу к системе сами.

1
ответ дан 1 December 2019 в 16:56

В версии 20.04 я столкнулся с похожей проблемой.

$ sudo snap start docker
Started.

Однако, когда я ввел команду docker, похоже, она не запустилась.

$ docker ps
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

Мне нужно было вернуться к первой ошибке, чтобы выяснить, в чем проблема с использованием journalctl. Последующие ошибки не сообщали о той же проблеме.

$ journalctl -x -u snap.docker.dockerd.service
docker.dockerd[1687]: failed to start daemon: pid file found, ensure docker is not running or delete /var/snap/docker/471/run/docker.pid

Проблему решило простое удаление файла .pid

$ sudo rm /var/snap/docker/471/run/docker.pid
$ sudo snap start docker
$ docker ps

Отображались все запущенные контейнеры.

0
ответ дан 18 November 2020 в 17:00

Другие вопросы по тегам:

Похожие вопросы: