python如何使用sudo命令_如何在非 sudo 用户下运行 docker 命令?

当我们在一台 Linux 系统中安装了 Docker 后, 有时候会遇到下面这样的错误, 我们在运行 docker 的命令时必须加上 sudo, 例如: sudo docker ps, 但是我们其实更希望能够直接通过 docker ps 来运行 docker 命令。

ee057b80526fa282a28b03a0fb5df4aa.png

那么我们可以如何解决这样的问题呢?

可以参考如下步骤:

  • 创建 docker 的用户组:sudo groupadd docker
  • 将当前 user 加入 docker 的用户组:sudo usermod -aG docker $USER
  • 重启 docker:
sudo snap restart docker / sudo service docker restart / sudo /etc/init.d/docker restart
  • 从当前 shell 中登出用户并再次登陆,以重新评估当前的用户组的权限。 切换当前会话到新 group 或者重启会话。可以通过 newgrp - docker 切换当前用户组到 docker 用户组。

注意:这一步是必须的,否则 groups 命令获取到的是缓存的用户组信息,刚添加的用户组信息可能还未能生效,所以 docker ps 执行时同样会有错。

一般情况下,操作到这一步就可以解决该问题了,但有时还会遇到下面的问题,导致仍然无法直接通过 docker ps 访问 docker 命令。

e537116ef31186f1b39abf726058050a.png

如果在确定了用户组的设置是正确的情况下,再次遇到这个问题,就是由于 /var/run/docker.sock 文件的权限不够导致的。可以按如下操作解决:

  • ls -lrth /var/run/docker.sock 查看 docker.sock 的权限。会发现 docker 用户组其实是没有读写权限的。
  • sudo chmod 666 /var/run/docker.sock 更改权限。
  • ls -lrth /var/run/docker.sock 再次查看 docker.sock 的权限。这样就可以了。

这样就可以直接通过 docker ps 这样的方式操作 docker 命令,而不用每次都加上 sudo 了。

参考文档:
  • https://docs.docker.com/install/linux/linux-postinstall/
  • https://techoverflow.net/2018/12/15/how-to-fix-docker-got-permission-denied-while-trying-to-connect-to-the-docker-daemon-socket/

本文首发于「愚一笔记」

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值