Глиф Учебники

Ошибка permission denied при запуске docker

Справочник · Docker · 2 минуты чтения

Ошибка выглядит так:

Текст
permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock

Текст зависит от версии Docker: в старых версиях строка начинается с Got permission denied …, в новых — permission denied while trying to connect to the docker API at unix:///var/run/docker.sock. Причина и решение одни и те же.

Ошибка значит: у вашего пользователя нет прав на файл /var/run/docker.sock, через который команда docker говорит со службой Docker. Этим файлом могут пользоваться только root и участники группы docker.

Решение

Добавьте себя в группу docker:

Bash
sudo usermod -aG docker $USER

Затем выйдите из системы и войдите снова: группы применяются при входе. По SSH — закройте соединение и подключитесь заново; на компьютере с рабочим столом — выйдите из сеанса. Если Linux работает в виртуальной машине и выход не помог, перезагрузите её. Проверка:

Bash
groups
docker run hello-world

В выводе groups должна быть docker.

Чтобы не выходить из системы прямо сейчас, можно открыть оболочку с новой группой — она действует только в этом окне терминала:

Bash
newgrp docker

Группа docker равна правам root: её участник может запустить контейнер с доступом ко всем файлам системы. Добавляйте туда только тех, кому доверили бы root. Если такой доступ давать нельзя — набирайте sudo docker ….

Если не помогло

Bash
sudo chown "$USER":"$USER" "$HOME/.docker" -R
sudo chmod g+rwx "$HOME/.docker" -R

Чего делать не надо

Не меняйте права на сокет командой sudo chmod 666 /var/run/docker.sock или 777. Так управление Docker, а значит и root, получает любой пользователь и любая программа на компьютере. К тому же после перезапуска Docker права вернутся обратно.

Похожая, но другая ошибка — Cannot connect to the Docker daemon … Is the docker daemon running?: служба не запущена. О ней — в справке Ошибка Cannot connect to the Docker daemon.