我遇到过类似的问题,这是一个权限问题,这个问题的原因是Docker守护进程/服务器总是作为根用户运行,并希望您总是使用sudo来为Docker命令作序。
Docker守护进程绑定到Unix套接字而不是TCP端口。默认情况下,Unix套接字由root用户拥有,其他用户只能使用sudo访问它。
为了解决这个问题,以下是对我有效的方法:
首先,检查是否已经创建了docker组:
cat /etc/group
如果你在显示的列表中没有找到docker,那么你需要创建一个:
sudo groupadd docker
接下来,使用下面的命令确认您的用户和组:
cat /etc/group
滚动查看docker的组。应该是这样的格式
docker:x:140:promisepreston
docker是我的组,promisepreston是我的用户
现在我们可以将您的用户添加到docker组
将你的用户加入docker组,如果你想以非root用户的身份使用docker:
在你的终端上复制并运行下面的命令,而不需要以任何方式修改它,不管你想要运行或试图运行的docker image/container/命令是什么,或者是导致权限问题的:
sudo usermod -aG docker $USER
运行上面的命令后,您将需要注销并重新登录,以便重新评估您的组成员资格。然而,在Linux上,你也可以运行下面的命令来激活对组的更改(在你的终端上复制并运行下面的命令,而不以任何方式修改它,不管你想要运行或试图运行或导致权限问题的docker image/container/命令):
newgrp docker
OR
sudo systemctl restart docker
您现在可以验证您可以在没有sudo权限的情况下运行docker命令,通过再次运行导致权限问题的命令,例如(将my-command替换为您的image/container/命令的名称):
docker run my-command
对于Docker和Local文件系统文件:
如果你在本地文件系统上有一份文件的副本,那么你可以使用以下格式更改应用程序文件存储的应用程序目录的所有权:
sudo chown your_user:your_group -R my-app-directory/
所以在我的例子中,它将是:
sudo chown promisepreston:docker -R my-app-directory/
注意:请在应用程序目录所在的父目录中运行此命令。
这是所有。
我希望这对你们有帮助