前情提要
之前租了一台服务器,用来给我的SpringBoot
项目部署到云端来用。要部署到云端需要先配置一下服务器,需要部署一下docker
,在给服务器的acs
用户配置sudo
权限的时候,按照Linux
基础课的讲义来配置项目但是却始终没有配置成功。显示的错误如下所示:
问题出现的原因:
docker
的守护线程绑定的是unix socket
,而不是TCP端口,这个套接字默认属于root
,其他用户访问的是需要sudo
去访问这个套接字。所以docker
的服务进程,都是以root
账户运行。
解决方法:
一开始尝试重新配置docker
,但是尝试完之后始终不能够解决这个问题。去搜索引擎查找到的有效的解决方案如下: [ 解决方法1
解决方法2
首先输入cat group|grep docker
来检查有无用户组。
发现确实没有用户组。
于是输入命令开始创建用户组
sudo groupadd docker
结果显示用户组存在,可能就决定解决方法有问题,于是换了解决方法2(但其实解决方法1是没有问题的)
选择用解决方法2,以此输入如下命令:
sudo groupadd docker #添加docker用户组
sudo gpasswd -a $USER docker #将登陆用户加入到docker用户组中
newgrp docker #更新用户组
docker ps #测试docker命令是否可以使用sudo正常使用
此时输入docker version
与docker images
后,如上图所示,没有发生问题。
于是关掉服务器再次重启,再次输入docker images
发现问题依旧存在。
那么就需要再输入一遍
sudo usermod -aG docker $USER
这样的话,在不进入tmux
的情况下,就能够正常的打开docker
了
但是进入tmux
中不行。
原因在于: 根据官方文档:tmux keeps all its state in a single main process, called the tmux server. This runs in the background and manages all the programs running inside tmux and keeps track of their output.
tmux是client-server架构,后台有一个tmux server进程管理所有程序的运行状态。(英语好的可以自行翻译hh~)
解决方法很简单:
首先:杀掉tmux
进程
pkill -f tmux
然后再打开tmux
,输入docker images
最终成功。
感谢大佬%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
谢谢大佬,被帮到了Orz