在Ubuntu 20.04上首次运行Docker时权限被拒绝错误
前几天,在我的本地开发计算机上设置docker时,我遇到了权限问题。安装docker之后,我发现我遇到了这个权限问题,这意味着我无法使用本地用户帐户运行docker。因此,我被迫将docker作为sudo运行,我不想每次都这样做。
这是我得到的错误。
$ docker run hello-world docker: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post http://%2Fvar%2Frun%2Fdocker.sock/v1.40/containers/create: dial unix /var/run/docker.sock: connect: permission denied. See 'docker run --help'.
事实证明,码头工人在其网站上有专门用于解决此问题的部分。纠正此问题所涉及的步骤如下。
创建一个泊坞窗组(该目录是否已存在无关紧要)。
sudogroupadddocker
将您的用途添加到docker组。
sudousermod-aGdocker$USER
为了使该更改生效,您需要注销并重新登录。
如果您已完成这些步骤,但发现权限错误仍然存在问题,则需要允许对该docker.sock文件的更多访问。可以使用以下命令完成此操作。
sudochmod666/var/run/docker.sock
此后,您可以使用与以前相同的命令来确保一切正常。
$ docker run hello-world Hello from Docker! This message shows that your installation appears to be working correctly. To generate this message, Docker took the following steps: 1. The Docker client contacted the Docker daemon. 2. The Docker daemon pulled the "hello-world" image from the Docker Hub. (amd64) 3. The Docker daemon created a new container from that image which runs the executable that produces the output you are currently reading. 4. The Docker daemon streamed that output to the Docker client, which sent it to your terminal. To try something more ambitious, you can run an Ubuntu container with: $ docker run -it ubuntu bash Share images, automate workflows, and more with a free Docker ID: https://hub.docker.com/ For more examples and ideas, visit: https://docs.docker.com/get-started/
看到以上内容后,您的docker实例应该可以使用了。
我应该注意,关于不可信用户控制您的docker守护程序的能力存在一个小的安全问题。仅当用户能够创建使用/作为共享驱动器的Docker实例时才适用,这实际上使该Docker容器可以完全访问您的硬盘驱动器。如果您担心此问题,可以通过将'sudodocker'命令包装在别名中而不是授予组访问权限来使用docker,因为它是开箱即用的。这样设置别名。
aliasdocker='sudodocker'
通过在bash配置文件中设置此项,您可以一直有效地以sudo身份运行docker,而无需键入“sudo”部分。这并不总是有效,特别是如果您的docker命令正在通过bash脚本运行时,因为它不会选择别名。