Как исправить докер: получил разрешение на отказ
Я установил Docker на моей машине, где у меня установлена ОС Ubuntu. После чего я установил докер, когда я запускаю
sudo docker run hello-world
Все хорошо, но я хочу скрыть слово sudo
, чтобы сделать команду более короткой.
Если я напишу команду без слова sudo
docker run hello-world
Это отображает следующее:
docker: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post http://%2Fvar%2Frun%2Fdocker.sock/v1.35/containers/create: dial unix /var/run/docker.sock: connect: permission denied.See 'docker run --help'.
Это случилось так же, когда я пытаюсь сделать
docker-compose up
Как я могу решить эту проблему?
Ответы
Ответ 1
Если вы хотите запустить docker от имени пользователя, не являющегося пользователем root, вам нужно добавить его в группу Docker.
- Создайте группу докеров.
$ sudo groupadd docker
- Добавьте своего пользователя в группу Docker.
$ sudo usermod -aG docker $USER
- Выйдите из системы, войдите снова и запустите (это не работает, вам может потребоваться перезагрузить компьютер)
$ docker run hello-world
Взято из докера официальной документации:
управлять-докер-а-а-некорневой пользователь
Ответ 2
После обновления я получил разрешение отказано.
Выполнение шагов "mkb" после установки ничего не изменило, потому что мой пользователь уже был в группе "docker"; Я повторяю это дважды, но безуспешно.
После часа поиска наконец-то сработало следующее решение:
sudo chmod 666 /var/run/docker.sock
Решение пришло из Ольшанска.
Похоже, что при обновлении воссоздается сокет без достаточных разрешений для группы "Докер".
Проблемы
Этот жесткий chmod открывает дыру в безопасности и после каждой перезагрузки эта ошибка запускается снова и снова, и вам приходится каждый раз повторять вышеуказанную команду. Я хочу решение раз и навсегда. Для этого у вас есть две проблемы:
1) Проблема с SystemD
: сокет будет создан только с владельцем "root" и группой "root".
Вы можете проверить эту первую проблему с помощью этой команды:
ls -l /lib/systemd/system/docker.socket
Если все это хорошо, вы должны видеть "root/docker
", а не "root/root
".
2) Проблема с графическим входом в систему: https://superuser.com/questions/1348196/why-my-linux-account-only-belongs-to-one-group
Вы можете проверить эту вторую проблему с помощью этой команды:
groups
Если все правильно, вы должны увидеть группу Docker в списке.
Если нет, попробуйте команду
sudo su $USER -c groups
если вы видите группу докеров, то это из-за ошибки.
Решения
Если вам удастся получить обходной путь для графического входа в систему, это должно помочь:
sudo chgrp docker /lib/systemd/system/docker.socket
sudo chmod g+w /lib/systemd/system/docker.socket
Но если вы не можете справиться с этой ошибкой, неплохое решение может быть следующим:
sudo chgrp $USER /lib/systemd/system/docker.socket
sudo chmod g+w /lib/systemd/system/docker.socket
Это работает, потому что вы находитесь в графической среде и, вероятно, единственный пользователь на вашем компьютере.
В обоих случаях вам нужна перезагрузка (или sudo chmod 666 /var/run/docker.sock
)
Ответ 3
- добавить группу докеров
$ sudo groupadd docker
- добавьте вашего текущего пользователя в группу Docker
$ sudo usermod -aG docker $USER
3. переключить сеанс в группу докеров
$newgrp - docker
- бежать
$docker run hello-world
Ответ 4
- Добавить текущего пользователя в группу
docker
sudo usermod -aG docker $USER
- Измените права доступа к сокету докера, чтобы иметь возможность подключаться к демону докера
/var/run/docker.sock
sudo chmod 666 /var/run/docker.sock
Ответ 5
Я решаю эту ошибку с помощью команды:
$ sudo chmod 666 /var/run/docker.sock
Ответ 6
используйте эту команду
sudo usermod -aG docker $USER
затем перезагрузите компьютер, это сработало для меня.
Ответ 7
lightdm и kwallet отправляются с ошибкой, которая, по-видимому, не проходит дополнительные группы при входе в систему. Чтобы решить эту проблему, я также, кроме sudo usermod -aG docker $USER
, должен был закомментировать
auth optional pam_kwallet.so
auth optional pam_kwallet5.so
в
#auth optional pam_kwallet.so
#auth optional pam_kwallet5.so
в /etc/pam.d/lightdm
перед перезагрузкой, чтобы группа Docker действительно имела эффект.
ошибка: https://bugs.launchpad.net/lightdm/+bug/1781418 и здесь: https://bugzilla.redhat.com/show_bug.cgi?id=1581495
Ответ 8
Чтобы исправить эту проблему, я искал, где установлен мой докер и сборщик докеров. В моем случае docker
был установлен в /usr/bin/docker
а docker-compose
был установлен в /usr/local/bin/docker-compose
path. Затем я пишу это в своем терминале:
Докер:
sudo chmod +x /usr/bin/docker
Для docker-compose
:
sudo chmod +x /usr/local/bin/docker-compose
Теперь мне не нужно писать в моих командах докер слово sudo
/************************************************* **********************/
Errata:
Лучшее решение этой проблемы было прокомментировано @mkasberg. Я цитирую комментарий:
That might work, you might run into issues down the road. Also, it a security vulnerability. You'd be better off just adding yourself to the docker group, as the docs say. sudo groupadd docker, sudo usermod -aG docker $USER.
Docs:
https://docs.docker.com/install/linux/linux-postinstall/
Большое спасибо!
Ответ 9
Сообщение об ошибке сообщает, что ваш текущий пользователь не может получить доступ к модулю докера, потому что у вас нет прав доступа к сокету Unix для связи с механизмом.
В качестве временного решения вы можете использовать sudo для запуска неудачной команды от имени пользователя root (например, sudo docker ps). Однако рекомендуется исправить проблему, добавив текущего пользователя в группу Docker:
Запустите эту команду в вашей любимой оболочке, а затем полностью выйдите из своей учетной записи и снова войдите в систему (или выйдите из сеанса SSH и повторно подключитесь, если сомневаетесь, выйдите из системы и войдите в систему компьютера, на котором вы пытаетесь запустить докер!):
sudo usermod -a -G docker $ USER
Ответ 10
Получено отказ в разрешении при попытке подключения к сокету демона Docker в unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.40/images/json: наберите unix/var/run/docker.sock: connect: разрешение отклонено
sudo chmod 666 /var/run/docker.sock
Это исправит мою проблему.
Ответ 11
chmod 0777/home/huginn/mysql-data
это мое решение.