尝试在PyCharm Professional版本中设置Docker时出现Permission Denied错误.我在Debian Jessie(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套接字,Engine API URL = 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组拥有.
所以我尝试将我的用户添加到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时,不会立即反映您正在使用的用户帐户的更改.您需要注销并再次登录才能刷新系统.本文中的更多信息和答案:Add user to group but not reflected when run “id”.
其次,在Docker组中添加自己允许权限提升!任何能够在没有sudo的情况下运行docker(因此无需输入密码)的用户也可以运行容器,其中系统的根安装在卷中:docker run -v /:/ host_root -it –rm ubuntu /斌/庆典.由于您是容器中的root用户,这意味着您可以像操作主机上的root一样操作主机系统.在Docker组中添加用户之前,请考虑这一点.
id -nG
如果没有,则需要通过下面的命令将用户添加到docker组中.
sudo groupadd docker
sudo usermod -aG docker $USER
当您执行命令sudo systemctl start docker时,它会创建一个docker进程.该docker进程包含dockerd守护程序线程.该命令还会创建默认的docker.sock Unix套接字. dockerd守护程序线程持续监听docker.sock套接字.这使您可以使用docker.pid进程执行内核级IPC.为了能够使用此docker套接字,您需要具有进程级别(docker.pid)和文件级别(docker.sock)的适当权限.因此,执行以下两个命令可以解决您的问题.
sudo chmod a+rwx /var/run/docker.sock
sudo chmod a+rwx /var/run/docker.pid
注意:运行sudo dockerd -H unix:///var/run/docker.sock也会执行与上述相同的操作.
此外,您可以创建TCP套接字,以便可以将此TCP套接字用于您自己的主机以及任何远程主机.
docker stop:sudo systemctl stop docker
dockerd -H tcp://127.0.0.1:2375 -H //你应该在执行这个命令之前停止docker
启动docker:sudo systemctl启动docker