我在装有Ubuntu操作系统的机器上安装了Docker。 当我跑步时:

sudo docker run hello-world

一切都很好,但是我想隐藏sudo命令以使该命令更短。 如果我写的命令没有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.35/containers/create: dial unix /var/run/docker.sock: connect: permission denied. See 'docker run --help'.

当我试图跑步时,同样的情况也会发生:

docker-compose up

我该如何解决这个问题?


当前回答

作为linux用户的最短答案->

简单地尝试任何命令作为超级用户与“sudo”

- sudo docker-compose up

其他回答

修复Docker问题:(权限被拒绝)

如果docker组不存在,请创建docker组:sudo groupadd docker 查看可用系统中的超级用户数量:grep -Po '^sudo.+:\K。* $的所属 在linux命令shell中导出用户:Export user = demuser 将用户添加到docker组:sudo usermod -aG docker $ user 执行以下命令/登录或注销 检查docker运行是否正常:docker run hello-world 如果仍然得到错误,重新启动:Reboot

如果不成功,执行以下命令:

Sudo chmod 660 /var/run/docker.sock

最直接的解决办法是打字

Sudo chmod 666 /var/run/docker.sock 每次你启动你的机器。然而,这种方法会破坏现有的任何系统安全性,并向所有人开放Docker套接字。如果这对你来说是可以接受的——例如:你的机器的唯一用户——那么就使用它。

尽管如此,每次启动机器时都需要它,您可以通过添加使它在引导时运行

start on startup
task
exec chmod 666 /var/run/docker.sock

打开/etc/init/docker-chmod.conf文件。

在unix:///var/run/ Docker上尝试连接Docker守护进程套接字时被拒绝权限。sock: http://%2Fvar%2Frun%2Fdocker.sock/v1.40/images/json:拨号unix /var/run/docker。Sock: connect:拒绝权限

sudo chmod 666 /var/run/docker.sock

这解决了我的问题。

如果你想以非root用户运行docker,那么你需要将它添加到docker组中。

如果docker组不存在,请创建docker组

$ sudo groupadd docker

将您的用户添加到docker组。

$ sudo usermod -aG docker $USER

登录到新的docker组(以避免再次注销/登录;但如果还不够,请尝试重新启动):

$ newgrp docker

检查docker是否可以在没有root的情况下运行

$ docker run hello-world

如果仍然有错误,重新启动

$ reboot

警告

docker组授予等同于root用户的权限。有关这如何影响系统安全性的详细信息,请参阅Docker Daemon攻击面。

摘自docker官方文档: manage-docker-as-a-non-root-user

Docker守护进程绑定到Unix套接字,而不是TCP端口。 默认情况下,Unix套接字由root用户拥有,其他用户只能使用sudo访问它。Docker守护进程始终以根用户运行。

如果不想在docker命令前面加上sudo,可以创建一个名为docker的Unix组,并向其中添加用户。当Docker守护进程启动时,它会创建一个Unix套接字,供Docker组的成员访问。

创建docker组并添加用户:

Create the docker group sudo groupadd docker Add your user to the docker group sudo usermod -aG docker $USER Log out and log back in so that your group membership is re-evaluated. If testing on a virtual machine, it may be necessary to restart the virtual machine for changes to take effect. On a desktop Linux environment such as X Windows, log out of your session completely and then log back in. On Linux, you can also run the following command to activate the changes to groups: newgrp docker Verify that you can run docker commands without sudo. The below command downloads a test image and runs it in a container. When the container runs, it prints an informational message and exits docker run hello-world

如果您在将用户添加到Docker组之前首先使用sudo运行Docker CLI命令,您可能会看到以下错误,这表明您的~/。由于sudo命令,创建的Docker /目录权限不正确。

   WARNING: Error loading config file: /home/user/.docker/config.json -
   stat /home/user/.docker/config.json: permission denied

要解决这个问题,要么删除~/。Docker /目录(它会自动重新创建,但任何自定义设置都将丢失),或使用以下命令更改其所有权和权限:

sudo chown "$USER":"$USER" /home/"$USER"/.docker -R

sudo chmod g+rwx "$HOME/.docker" -R

linux上docker的所有其他后期安装步骤都可以在这里找到https://docs.docker.com/engine/install/linux-postinstall/