При попытке настроить Docker в выпуске PyCharm Professional появляется ошибка «Отказано в доступе». Я в Debian, Джесси (BunsenLabs).
Cannot connect: io.netty.channel.AbstractChannel$AnnotatedConnectException: connect(..) failed: Permission denied: /var/run/docker.sock
caused by: java.net.ConnectException: connect(..) failed: Permission denied
Это происходит как с настройками по умолчанию (с использованием сокета Unix), так и с сокетом TCP, URL-адрес Engine Engine = unix:///var/run/docker.sock
(имеет ли смысл?).
Если мы посмотрим на разрешения для сокета:
$ ls -l /var/run/docker.sock
srw-rw---- 1 root docker 0 Jul 5 11:18 /var/run/docker.sock
Мы видим, что он принадлежит root и группе докеров.
Поэтому я попытался добавить своего пользователя в группу Docker (с помощью sudo usermod -a -G docker USERNAME
) и перезапустил службу Docker (с помощью sudo service docker restart
), но он все равно не работает.
Один из способов разрешить PyCharm использовать сокет - запустить его с правами root, т.е. sudo pycharm
, но я бы хотел этого избежать. Я также смог исправить это, установив разрешения на чтение и запись для других в сокете (sudo chmod o+rw /var/run/docker.sock
), но теперь каждый может использовать Docker на этом компьютере без прав администратора.
Какой самый безопасный способ разрешить PyCharm подключаться к сокету Docker?
Также обратите внимание, что Docker отлично работает в командной строке. До быстрого и грязного исправления (chmod o+rw
) мне приходилось использовать sudo docker
, и я обновил /etc/sudoers
, чтобы не вводить пароль для этой команды. Теперь работает даже без sudo
. Он не чувствует себя в безопасности, но это машина для разработки, поэтому, если нет другого решения, я оставлю его таким.
РЕДАКТИРОВАТЬ: Я добавляю дополнительную важную информацию.
Во-первых, добавление моего пользователя в группу Docker было действительно правильным решением. Дело в том, что при использовании sudo usermod
изменения не сразу отражаются для используемой вами учетной записи. Вам необходимо выйти и снова войти, чтобы обновить систему. Дополнительная информация в этом сообщении и ответ: Добавление пользователя в группу, но не отображается при запуске "id" .
Во-вторых, добавление себя в группу Docker позволяет повысить привилегии! Любой пользователь, имеющий возможность запускать docker
без sudo
(и, следовательно, без ввода пароля), также сможет запускать контейнер с корневым каталогом системы, смонтированным в томе: docker run -v /:/host_root -it --rm ubuntu /bin/bash
. Поскольку вы являетесь пользователем root в контейнере, это означает, что вы можете манипулировать хост-системой , как если бы вы были суперпользователем на хосте . Пожалуйста, примите это во внимание, прежде чем добавлять пользователей в группу Docker.