尝试在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
Run Code Online (Sandbox Code Playgroud)
它既有默认设置(使用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
Run Code Online (Sandbox Code Playgroud)
我们看到它由root和docker组拥有.
所以我尝试将我的用户添加到docker组(with sudo usermod -a -G docker USERNAME
),然后重新启动Docker服务(with sudo service docker restart
),但它仍然无效.
允许PyCharm使用套接字的一种方法是使用root权限运行它,即sudo pycharm
,但我想避免这种情况.我还能够通过在socket(sudo chmod o+rw /var/run/docker.sock
)上为其他人设置读写权限来解决这个问题,但现在每个人都可以在没有管理员权限的情况下在该机器上使用Docker.
允许PyCharm连接到Docker套接字最安全的方法是什么?
此外,请注意Docker在命令行上运行正常.在quick-and-dirty-fix(chmod o+rw
)之前,我不得不使用sudo docker
,并且已更新/etc/sudoers
为不输入此命令的密码.现在它甚至没有工作sudo
.它感觉不安全,但它是一台开发机器,所以如果没有其他解决方案,我会保持这样.
编辑:我正在添加其他重要信息.
首先,在Docker组中添加我的用户确实是要走的路.问题是,在使用时 sudo usermod
,您所使用的用户帐户不会立即反映更改. …
使用 Bash 5.0:
$ bash --help
GNU bash, version 5.0.0(1)-release-(x86_64-pc-linux-gnu)
Usage: bash [GNU long option] [option] ...
bash [GNU long option] [option] script-file ...
GNU long options:
--debug
--debugger
--dump-po-strings
--dump-strings
--help
--init-file
--login
--noediting
--noprofile
--norc
--posix
--pretty-print
--rcfile
--restricted
--verbose
--version
Run Code Online (Sandbox Code Playgroud)
这个--pretty-print
选项是什么?我在 Bash 5.0 手册页和互联网上都找不到它!好神秘:O
在 Sphinx 文档中,我定义了一个这样的参考文档:
Reference
=========
.. toctree::
reference_api
reference_cli
reference_client
reference_downloads
reference_options
reference_stats
reference_utils
Run Code Online (Sandbox Code Playgroud)
该reference_api
文件如下所示:
API module
==========
.. automodule:: aria2p.api
:no-members:
API
---
.. autoclass:: aria2p.api.API
:members:
Run Code Online (Sandbox Code Playgroud)
现在我在侧边栏中得到了这个列表:
Reference
API module
API
Run Code Online (Sandbox Code Playgroud)
我还想添加:members:
侧栏中记录的所有 API 方法,例如:
Reference
API module
API
__init__
add_magnet
add_metalink
...
Run Code Online (Sandbox Code Playgroud)
这可能吗?我是否应该更改 Sphinx 编写模块函数和类的方法以向它们添加锚点的方式,以便侧边栏可以显示它们?
我在尝试实现动态排序时遇到了一个有趣的问题。给出以下代码:
>>> l = []
>>> for i in range(2):
>>> def f():
>>> return f.v
>>> f.v = i
>>> l.append(f)
Run Code Online (Sandbox Code Playgroud)
您必须注意如何使用以下功能l
:
>>> l[0]()
1
>>> l[1]()
1
>>> [h() for h in l]
[1, 1]
>>> [f() for f in l]
[0, 1]
>>> f = l[0]
>>> f()
0
>>> k = l[1]
>>> k()
0
>>> f = l[1]
>>> k()
1
>>> del f
>>> k()
NameError: global name 'f' is not defined …
Run Code Online (Sandbox Code Playgroud) 我想显示一些数据的图例(标题?).对于图例的每个部分,我将一个rect和ap附加到父分区.问题是rect没有出现.
这是我的代码:
var groups = {{ groups|safe }};
groups.forEach(function(group, i) {
var div = d3.select("#collapse-legend");
div.append("rect")
.attr("width", 17)
.attr("height", 17)
.style("fill-opacity", 1)
.style("fill", function (d) { return c(i); });
div.append("p").text(group)
});
Run Code Online (Sandbox Code Playgroud)
现在,当我检查我的网页内容时,我得到rect和p,但是rect:
我的代码中有错误吗?有没有更好的方法来实现这一目标?我是javascript和d3.js的新手所以请放纵^^
所以这就是我的结局.
HTML:
<div ...>
<svg id="legend-svg"></svg>
</div>
Run Code Online (Sandbox Code Playgroud)
JavaScript的:
// set height of svg
d3.select("#legend-svg").attr("height", 18*(groups.length+1));
// for each group, append rect then text
groups.forEach(function(group, i) {
d3.select("#legend-svg").append("rect")
.attr("y", i*20)
.attr("width", 18)
.attr("height", 18)
.style("fill-opacity", 1)
.style("fill", function (d) { return c(i); });
d3.select("#legend-svg").append("text")
.attr("x", …
Run Code Online (Sandbox Code Playgroud) 有没有办法用Sed / Awk / Perl替换其长度的模式?我正在寻找可以在Bash脚本中使用的小型可移植命令。
我有全部以特定字符(比如说x
)开头的字符串,并且我想用x
长度来代替这些重复。
所以
xxxx rest of the line
xxx again
xx again and again
xxxxx you got my point
Run Code Online (Sandbox Code Playgroud)
会成为
4 rest of the line
3 again
2 again and again
5 you got my point
Run Code Online (Sandbox Code Playgroud)
Sed可能不是一个好的候选人。我知道Perl有一个e
选项,允许替换字符串来执行代码,但是我不知道怎么会在这里使用:perl -pe 's/^(x+)/length($1)/e'
?