docker image ls 提示 “Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock

现象描述

上次在统信Linux上费了很大力气才装上docker,当时记得是可以用了。但今天登录系统后执行 docker image ls却提示上面的问题,但切换到root账户再执行这个命令就不报错了。

root可以正常使用,普通用户不行,大概率是权限的问题,可以给这个用户加docker用户组权限。

尝试1

使用下面的命令,给用户增加权限

usermod -aG docker wang

不过执行之后,再次尝试还是提示同样的错误。不太确定是否需要更新权限(或重启)导致的。

尝试2

找到了一个另外的办法。

用了另外一个命令增加权限,同时更新了一下权限,随后执行不再报错,问题解决。

wang@wang-PC:~$ ls -l /var/run/docker.sock
srw-rw---- 1 root docker 0 8月  23 08:38 /var/run/docker.sock

wang@wang-PC:~$ su
请输入密码
Password:
验证成功

root@wang-PC:/home/wang# gpasswd -a wang docker
正在将用户"wang"加入到"docker"组中
root@wang-PC:/home/wang# newgrp docker
root@wang-PC:/home/wang# exit
exit

root@wang-PC:/home/wang# docker image ls
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
postgres            12.6                9691f14013a7        15 months ago       300MB

gpasswd和usermod的区别

usermod是修改用户的属性,gpasswd的话主要是对用户组的操作。

但就上面两个命令来讲,没什么区别,都是把wang加入到docker组中。因此,第一个没生效应该是没有更新的原因(随后尝试删除了wang的docker组,重启,再执行报错;usermod添加权限,重启,执行成功,因此验证了尝试1中的猜测)。

可以参考使用说明

[wang@DESKTOP-K8UBC7R system32]$ usermod
Usage: usermod [options] LOGIN

Options:
  -c, --comment COMMENT         new value of the GECOS field
  -d, --home HOME_DIR           new home directory for the user account
  -e, --expiredate EXPIRE_DATE  set account expiration date to EXPIRE_DATE
  -f, --inactive INACTIVE       set password inactive after expiration
                                to INACTIVE
  -g, --gid GROUP               force use GROUP as new primary group
  -G, --groups GROUPS           new list of supplementary GROUPS
  -a, --append                  append the user to the supplemental GROUPS
                                mentioned by the -G option without removing
                                the user from other groups
  -h, --help                    display this help message and exit
  -l, --login NEW_LOGIN         new value of the login name
  -L, --lock                    lock the user account
  -m, --move-home               move contents of the home directory to the
                                new location (use only with -d)
  -o, --non-unique              allow using duplicate (non-unique) UID
  -p, --password PASSWORD       use encrypted password for the new password
  -R, --root CHROOT_DIR         directory to chroot into
  -P, --prefix PREFIX_DIR       prefix directory where are located the /etc/* files
  -s, --shell SHELL             new login shell for the user account
  -u, --uid UID                 new UID for the user account
  -U, --unlock                  unlock the user account
  -v, --add-subuids FIRST-LAST  add range of subordinate uids
  -V, --del-subuids FIRST-LAST  remove range of subordinate uids
  -w, --add-subgids FIRST-LAST  add range of subordinate gids
  -W, --del-subgids FIRST-LAST  remove range of subordinate gids
  -Z, --selinux-user SEUSER     new SELinux user mapping for the user account

[wang@DESKTOP-K8UBC7R system32]$ gpasswd
Usage: gpasswd [option] GROUP

Options:
  -a, --add USER                add USER to GROUP
  -d, --delete USER             remove USER from GROUP
  -h, --help                    display this help message and exit
  -Q, --root CHROOT_DIR         directory to chroot into
  -r, --delete-password         remove the GROUP's password
  -R, --restrict                restrict access to GROUP to its members
  -M, --members USER,...        set the list of members of GROUP
  -A, --administrators ADMIN,...

                                set the list of administrators for GROUP
Except for the -A and -M options, the options cannot be combined.

也可以看到,两个命令的侧重点是不一样的。

但gpasswd -a wang docker 和 usermod -aG docker wang的功能是一样的。

Linux 用户组的概念

在一些文章里看到了用户组又分为主组和附加组的概念,一时间有点晕乎。查了一下资料,发现两者其实对于使用来讲,区别不大。

对于一个用户来讲,有且只能有一个主组、主组可以更换;可以属于多个附加组。

详细如下:

主组也叫初始组,是用户登录系统时的组,规则如下:

  • 创建新用户时,若未明确指定该用户所属的主组,会默认创建一个与用户名相同的组,作为该用户的主组
  • 用户创建文件时,文件的所属权限组就是当前用户的主组
  • 使用 useradd命令时用 g参数可以指定主组,则不会默认创建同名的主组
  • 用户有且只能所属一个主组
  • 用户的主组不能被删除
  • 用户不能直接被移出主组,但可以更换主组
  • 用户被删除时它的主组若没有其他所属用户,则会自动删除该主组

附加组:

登录后可切换的其他组,规则如下:

  • 使用 useradd命令时用 G参数可以指定附加组
  • 用户可以所属零个或多个附加组
  • 用户的附加组和主组可相同
  • 附加组可以直接被删除而无需关心是否所属于用户
  • 附加组可以新增和移除任意个所属用户
  • 用户被删除时所属附属组不会受影响

建议:使用 gpasswd命令而不是 usermod,因为 usermod -G命令如果不写全用户的附属组,会清空之前的所有附属组

Original: https://www.cnblogs.com/wswang/p/16669371.html
Author: wswang
Title: docker image ls 提示 “Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/585787/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Redis6 源码调式

    Redis6 源码调式 安装Cygwin 1、下载安装Cygwin 去Cygwin的官方网站http://www.cygwin.com/ window 64位请选择 setup-x…

    Linux 2023年5月28日
    0129
  • Liunx-LVM创建与扩容

    LVM是 Logical Volume Manager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制,它由Heinz Mauelshagen在Linux 2…

    Linux 2023年6月8日
    0103
  • Linux基础03

    一些常见目录 usr目录 /usr/local/ # ⽤于保存⽤户安装软件程序信息 相当于windos中D:\Program Files (x86) linux系统安装软件的四种方…

    Linux 2023年6月7日
    097
  • 面试题目汇总

    目录: 1、数字数组数字数组2、字符串字符串3、链表 链表4、二叉树二叉树 5、堆栈 堆栈 posted @2019-12-11 20:35 风御之举 阅读(63 ) 评论() 编…

    Linux 2023年6月13日
    093
  • alpinelinux镜像安装中文字体

    镜像下载、域名解析、时间同步请点击阿里云开源镜像站 编辑dockerfile,先切换国内镜像源,默认alpinelinux是国外源,下载包会很慢 vim Dockerfile FR…

    Linux 2023年6月7日
    0114
  • 你还有什么问题吗?

    在面试过程中,一般都会有一个固定环节,那就是在临近结束时,面试官会问求职者: 你还有什么问题吗? 其实,这是一个很好的了解公司,了解未来团队的机会,但很多求职者却不知道问什么,或者…

    Linux 2023年6月7日
    0112
  • .Net中Aspose组件调试技巧

    | 0.48分钟 | 774.4字符 | 1、引言&背景 2、水印或截断问题解决 3、即时调试的技巧 4、声明与参考资料 | SCscHero | 2022/6/4 PM2…

    Linux 2023年6月13日
    082
  • 【redis使用全解析】常见运维操作

    $ redis-server redis.conf 常见选项: ./redis-server (run the server with default conf) ./redis-…

    Linux 2023年5月28日
    078
  • 如何入行软件开发——常见问题及岗位分工

    —— 你以为我每天上班就是为了几个臭钱么!? —— 是的,你说对了…… IT是一个有些让业外同行羡慕嫉妒恨的行业,统计数据来说平均薪资应当是仅次于金融行业的…

    Linux 2023年6月13日
    097
  • Redis info参数总结(转)

    可以看到,info的输出结果是分几块的,有Servers、Clients、Memory等等,通过info后面接这些参数,可以指定输出某一块数据。 我刚开始在Gentoo上装的默认版…

    Linux 2023年5月28日
    0129
  • 【socket】在Linux下socket温度上报–客户端

    socket通信客户端 socket函数 * 代码实现 socket函数 int socket(int domain,int type,int protocol); 参数: dom…

    Linux 2023年6月13日
    0115
  • Windows server 2008 域控制器

    Windows的网络架构 Windows的网络架构大致分为: 工作组架构 域架构 工作组架构:工作组是由一组通过网络连接在一起的计算机组成,组内的计算机可以共享本机的文件,打印机等…

    Linux 2023年6月7日
    098
  • 【填坑】树莓派4B上运行Bullseye版本系统,不能登录xrdp的问题~~

    以前使用 buster,安装xrdp后 pi用户xrdp登录正常,可自从使用了 bullseye系统,pi登录xrdp后,出现黑屏不能登录现象。 网上搜寻解决方案,一种方法是: 找…

    Linux 2023年6月7日
    094
  • SQLI-LABS(Less-11、12)

    Less-11(POST-Error Based-Single Quotes-String) 打开 Less-11的页面,可以看到一个登录框,需要输入用户名和密码,由本关名字可知S…

    Linux 2023年6月6日
    089
  • CentOS 7上安装和配置Ghost

    Ghost是一个轻量级的开源博客平台,易于使用。Ghost是完全可定制的,有许多主题可用。 在本教程中,您将在CentOS 7上设置Ghost。您还将配置Nginx以代理对Ghos…

    Linux 2023年6月13日
    072
  • 微服务与领域驱动设计,架构实践总结

    怎样的架构才能配得上造到飞起的变化? 一、软件复杂性 1、复杂原因 如果软件系统存在持续的迭代周期,那么其中业务、技术、架构的复杂性都会直线拉升,其相应的开发难度也会提高,可以用一…

    Linux 2023年6月14日
    067
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球