- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
尝试在 PyCharm 专业版中设置 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
时,更改不会立即反射(reflect)在您正在使用的用户帐户中。 您需要注销并重新登录才能刷新系统。 更多信息请参阅此帖子并回答:Add user to group but not reflected when run "id" .
其次,将自己添加到 Docker 组中允许权限提升!任何用户都能够在没有 sudo
的情况下运行 docker
(因此无需键入一个密码)也将能够运行一个容器,系统的根目录安装在一个卷中:docker run -v/:/host_root -it --rm ubuntu/bin/bash
。由于您是容器中的根用户,这意味着您可以像您是主机上的根用户一样操作主机系统。在 docker 组中添加用户之前,请考虑到这一点。
最佳答案
我假设,您的用户名已经在 docker 组中。要检查这一点,请发出以下命令。
id -nG
如果没有,您需要通过以下命令将您的用户添加到 docker 组中。
sudo groupadd docker
sudo usermod -aG docker $USER
当你执行命令时,sudo systemctl start docker
,它会创建一个 docker 进程。该 docker 进程包含 dockerd
守护线程。该命令还创建默认的 docker.sock
Unix 套接字。 docker.sock
套接字被 dockerd
守护线程持续监听。这使您可以使用 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 start docker
关于sockets - Pycharm Docker Unix/TCP 套接字(带有 unix :///var/run/docker. sock):权限被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51191094/
这个问题已经有答案了: Can I bind an array to an IN() condition in a PDO query? (23 个回答) 已关闭 5 年前。 任何人都可以看到我如何在
我阅读了关于此的 bash 手册页,但我不明白其中的区别。我对它们进行了测试,它们似乎产生了完全相同的结果。 如果值不是通过命令行参数设置的,我想设置一个变量的默认值。 #!/bin/bash var
我为我的网站开了一家商店,并让它运行起来,但我意识到它无法正确购买商品。换句话说,您不会走进一家商店,拿起一件商品,购买,再次购买,购买,再次购买,等等,以获得想要的数量。你一次捕获他们。我的网站缺少
基本上,我想知道为什么会这样(将列表的内存地址作为参数传递): void init_lista (elemPtr *list) { *list = NULL; } int main(){
看到这个问题:Is there a (built-in) way in JavaScript to check if a string is a valid number?还有这个:jsperf ,其
我有以下字符串: 我想用正则表达式替换所有后面有 px 的数字,并用 X 乘以它们的值。 (X 是一个变量)。 所以如果X=3,结果就是 请注意 X 必须是我将检索到函数的变量 最佳答案 以下代码
这个问题在这里已经有了答案: 关闭 13 年前。 同时 (var != var) System.out.println("循环.."); 执行它..如何声明..var
我只是好奇。我想知道表达式是否有特定原因 var &= expr 行为方式与不同 var = var && expr. 看起来第一个表达式中的表达式正在执行,而不管 var 上的 false 值。 我
我有这个 Ruby 代码: var1 = 10 puts var1.object_id var1 = var1 + 0 puts var1.object_id var1 = var1 + 1 puts
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: demote boost::function to a plain function pointer 所以我
好吧,堆栈溢出, 我花了几个小时来解决 javascript 中的问题(在 NodeJS 服务器中编写),但我真的不明白。 这就是发生的事情: var data = {x: 50}; var temp
首先,我在这里处理 1 和 0,我很清楚 1 == true 和 0 == false。但是我很好奇为什么这不起作用: $var = 1; echo $var; /* 1 */ $var = $var
标题说的是什么:将变量封装在 {}、"" 或 "{}"中是什么意思?我无法在网上找到关于此的任何解释 - 除了使用不会产生任何结果的符号外,我无法引用它们。 这是一个例子: declare -a gr
我需要将信息发送到我的 Html。例如 $(document).ready(function() { var = "'#"+result.tag+"'" // var = '#tag_dinamy
是否可能,如果可以,如何将以下表达式转换为一行? DEV=$(lsblk -no KNAME,MODEL | grep 'ModelNAME') DEV=${DEV%%'ModelNAME'} 简单的
isset($var) == "Test" 和 isset($var) && $var == 'Test" 有什么区别? 最佳答案 这里是一个简短的例子: $var = "Chuck Test"; v
isset($var) == "Test" 和 isset($var) && $var == 'Test" 有什么区别? 最佳答案 这里是一个简短的例子: $var = "Chuck Test"; v
如果我有一个字符串:[Object a:var b:var c:var]; 如何将 a:、b: 和 c: 与正则表达式匹配? 我试过:\[.+\s+(.+:).+\] 但它不适用于 a、b 和 c,它
这个问题在这里已经有了答案: Why does this if-statement combining assignment and an equality check return true? (
我正在 Powershell 中使用 SCSM,但遇到了 if 语句的问题。 我有一个函数,它根据作为变量传递给函数的条件收集数据。 例子: $JMLs1 = collectTickets -crit
我是一名优秀的程序员,十分优秀!