在tmux中,没有sudo权限时无法使用docker命令。

14

我想在Ubuntu 16.04上无需sudo运行docker。 我按照Docker网站上的Linux安装后说明进行操作:


I am trying to run docker without sudo on Ubuntu 16.04. I followed the Linux post-installation instructions on the Docker website:
sudo groupadd docker
sudo usermod -aG docker $USER

我重启计算机后运行了

docker ps

这个错误仍然出现:

尝试连接到unix:///var/run/docker.sock的Docker守护进程套接字时,收到了权限被拒绝的消息: http://%2Fvar%2Frun%2Fdocker.sock/v1.37/containers/json:拨号时出现 unix /var/run/docker.sock: connect: permission denied。

奇怪的是,如果我从我的机器SSH到自己,命令将被正确执行。当我从tty运行该命令时,也可以正常工作。

编辑:

ls -lah /var/run/docker.sock的输出:

srw-rw---- 1 root docker 0 Aug  9 11:22 /var/run/docker.sock

id的输出:

uid=1000(uname) gid=1000(uname) groups=1000(uname),4(adm),24(cdrom),27(sudo),29(audio),30(dip),46(plugdev),113(lpadmin),128(sambashare),999(docker)

可能出了什么问题呢? 谢谢帮助!


(Note: This is the translated version of the original text. I have not added any further explanation and retained the HTML tags as instructed.)

你能否在帖子中包含 'ls -lah /var/run/docker.sock' 的输出结果? - Neekoy
Docker套接字没问题,请同时运行'id'并粘贴输出? - Neekoy
你能运行 groups 命令并查看是否列表中包含 docker 吗? - byrnedo
“the weird thing is if i ssh from my machine to itself the command is executed correctly” 这句话是什么意思?在哪种情况下它不起作用,@unameuname? - byrnedo
当我直接使用终端时,@byrnedo无法工作。但是当我使用tty或者通过ssh user@localhost连接时可以正常工作。 - unameuname
显示剩余3条评论
2个回答

37

显然问题出在 tmux shell 上。

当一个账户被添加到 docker 组时,如果还有至少一个 tmux 会话打开,就会出现问题。关闭所有 tmux 会话即可解决问题[组账户将在下一会话中更新]。

解决方法:

  1. 杀掉 tmux:

pkill -f tmux

  1. 打开 tmux 并测试 docker:

docker run hello-world

现在它正常工作了。


1
如果您在将用户添加到docker组之前使用sudo运行Docker CLI命令,则可能会收到此错误,您需要删除~/.docker/目录(它会自动重新创建,但任何自定义设置都会丢失),或者使用以下命令更改其所有权和权限:
$ sudo chown "$USER":"$USER" /home/"$USER"/.docker -R
$ sudo chmod g+rwx "/home/$USER/.docker" -R

3
我的文件系统中不存在 ~/.docker/ 目录。 - unameuname

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接