docker-py执行容器列表命令触发PermissionError(13)的解决咨询
解决docker-py连接Docker守护进程时的Permission Denied错误
这个问题我碰到过好多次了,本质就是当前运行Python脚本的用户没有访问Docker守护进程的权限,下面是几个实用的解决步骤,按顺序试就行:
检查并添加用户到docker用户组
Docker守护进程默认允许docker组的用户访问它的socket,先看看你的用户是不是在这个组里:groups $USER如果输出里没有
docker,就把用户添加进去:sudo usermod -aG docker $USER这里要注意:添加完之后必须注销当前用户再重新登录,或者用
newgrp docker临时让组变更生效(不过注销重启是最稳妥的,避免后续出现奇怪的权限问题)。修复Docker socket文件的权限
有时候docker组是对的,但socket文件的权限出问题了,先检查一下:ls -l /var/run/docker.sock正常情况下,这个文件的所属应该是
root:docker,权限是srw-rw----。如果不是,执行下面的命令修正:sudo chown root:docker /var/run/docker.sock sudo chmod 660 /var/run/docker.sock临时应急方案(不推荐长期使用)
如果赶时间测试功能,可以直接用sudo运行你的Python脚本:sudo python3 your_script.py但长期这么做会带来安全风险,还是优先用前面的用户组方法。
重启Docker服务(如果上述步骤无效)
有时候权限变更需要重启Docker才能生效:sudo systemctl restart docker
另外,如果你是在Windows或Mac上用Docker Desktop,还要确保Docker Desktop正在运行,并且在设置里开启了“Expose daemon on tcp://localhost:2375 without TLS”(本地开发场景用没问题,生产环境别开这个)。
内容的提问来源于stack exchange,提问作者Shubham Pandey
相关产品推荐
相关产品推荐

