如何在Ubuntu上不使用sudo的情况下使用Docker
时间:2020-03-05 15:30:03 来源:igfitidea点击:
本教程将向我们展示如何在Ubuntu Linux机器上不使用sudo命令的情况下输入docker命令。
如果使用Docker在本地计算机上进行测试和开发,则可能会遇到这些消息。
$docker run hello-world Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.27/containers/json: dial unix /var/run/docker.sock: connect: permission denied
我们可能会在docker命令之前使用sudo或者使用su以root身份登录来规避此问题。
但这不是必须的。
可以以普通用户身份运行,有两种方法。
一种是将用户添加到docker组,另一种是允许其写入docker使用的Unix套接字。
我们将在Ubuntu 18.04 LTS上展示这两种方法。
1)将用户添加到docker组
如果不存在,请创建新组。
由于该组可能已经存在,该命令可能会失败,但是无论如何我们还是要运行它。
sudo groupadd docker
接下来,我们需要将当前用户添加到该组。
sudo gpasswd -a $USER docker
如果我们不想添加当前登录的用户,而要添加其他用户,则可以将$USER更改为该用户的用户名。
请注意,必须允许用户使用sudo。
最后,我们需要重新加载shell程序以应用新的组设置。
为此,我们可以重新启动,也可以注销然后重新登录,但是当我们实际上想要更细微的东西时,这两种方法都是不正确的,所以让我们执行此命令
newgrp docker
现在我们准备好在没有sudo的情况下运行docker test程序
docker run hello-world Unable to find image 'hello-world:latest' locally latest: Pulling from library/hello-world ca4f61b1923c: Pull complete Digest: sha256:97ce6fa4b6cdc0790cda65fe7290b74cfebd9fa0c9b8c38e979330d547d22ce1 Status: Downloaded newer image for hello-world:latest Hello from Docker! This message shows that your installation appears to be working correctly.
2)ACL列表
还有另一种方法可以做到这一点,那就是ACL列表。
仍以sudoer用户身份登录,我们需要运行此命令
sudo setfacl -m user:bobby:rw /var/run/docker.sock
当然,请为要使用docker的实际用户更改bobby。
现在,我们可以以该用户身份登录。
su bobby
现在我们可以使用docker,例如输入以下命令
docker ps
如果有的话,它应该列出容器。
如果没有,至少不会显示“权限被拒绝”错误。