【亲测有效】运行docker ps 出现Got permission denied问题的解决方案

问题描述

今天在运行 docker ps 命令的时候出现如下问题:

Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.38/containers/json: dial unix /var/run/docker.sock: connect: permission denied

看提示信息好像是权限不够,我们试试 root 权限:

我们发现用 root 权限就可以使用 docker 相关命令,那我们想在普通用户下使用 docker 相关命令,这该怎么办呢?

我们去 Docker Mannual 找到原因,原因如下:

Manage Docker as a non-root user

The docker daemon binds to a Unix socket instead of a TCP port. By default that Unix socket is owned by the user root and other users can only access it using sudo. The docker daemon always runs as the root user.

If you don’t want to use sudo when you use the docker command, create a Unix group called docker and add users to it. When the docker daemon starts, it makes the ownership of the Unix socket read/writable by the docker group.

上面这段话的意思是 docker 进程使用 Unix Socket 而不是 TCP 端口。而默认情况下, Unix socket 属于 root 用户,需要 root 权限才能访问。

我们该怎么解决这个问题呢?

解决方案一

使用 sudo 获取管理员权限,运行 docker 命令(当然我不推荐这种方法,因为我没成功过,似乎还是出现了如上问题)

解决方案二

由于 docker 守护进程启动的时候,会默认赋予名字为 docker 的用户组读写 Unix socket 的权限,因此只要创建 docker 用户组,并将当前用户加入到 docker 用户组中,那么当前用户就有权限访问 Unix socket 了,进而也就可以执行 docker 相关命令了。

我们可以使用如下命令解决问题:

sudo groupadd docker     #添加docker用户组
sudo gpasswd -a $USER docker     #将登陆用户加入到docker用户组中
newgrp docker     #更新用户组
docker ps    #测试docker命令是否可以使用sudo正常使用

然后我们可以完美地解决了这个问题,效果如下:

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Danny的专栏

Java+Oracle实现事务——JDBC事务

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/huyuyang6688/article/...

2752
来自专栏北京马哥教育

文件管理类命令常用使用方法及其相关示例演示

cat 使用语法:cat [-AbeEnstTuv][--help][--version] FILENAME 命令功能:查看文件内容或将多文件连接后传输到基本输...

3508
来自专栏大数据技术分享

HAProxy实现HiveServer2负载均衡

开启: service haproxy start 或 systemctl start haproxy

5390
来自专栏Java后端技术

Maven Java EE Configuration Problem 的完美解决办法

  最近在修改项目的时候,发现修改了项目依赖以后会出现如下图:Maven Java EE Configuration Problem 的问题,对于有强迫症的我来...

1202
来自专栏搜云库

Spring Cloud(十)高可用的分布式配置中心 Spring Cloud Config 中使用 Refresh

上一篇文章讲了SpringCloudConfig 集成Git仓库,配和 Eureka 注册中心一起使用,但是我们会发现,修改了Git仓库的配置后,需要重启服务,...

23010
来自专栏全栈之路

Android Studio遇到的坑

org.gradle.jvmargs=-Xmx512m MaxHeapSize=1024m android.enableAapt2=false

1083
来自专栏marsggbo

解决ping 127.0.0.1 一般故障 问题

​故障如下图: ? 绕了好一大圈才发现是goupi防火墙搞的鬼,弄得我一些软件一直运行不了!!!!! 废话不多说,关了防火墙就行了:操作步骤如下图示 ? ​...

4895
来自专栏电光石火

gradle加载本地jar包

1496
来自专栏Ken的杂谈

Spring Boot应用 打包与部署指南

Java Web应用在Spring Boot之前,通常是打包成war(Web application ARchive)包,结合Tomcat来完成部署。

7822
来自专栏SpringBoot

spingboot 打包jar

https://cloud.tencent.com/developer/support-plan?invite_code=jykf9t9jq2zu

1062

扫码关注云+社区

领取腾讯云代金券