1 问题描述

在终端执行”docker search nginx”命令,出现如下报错:

  1. 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.26/images/json: dial unix /var/run/docker.sock: connect: permission denied

image.png

2 原因分析

来自docker mannual:

  1. Manage Docker as a non-root user
  2. The docker daemon binds to a Unix socket instead of a TCP port. By default that Unix socket is owned by the user root and other users can only access it using sudo. The docker daemon always runs as the root user.
  3. If you dont want to use sudo when you use the docker command, create a Unix group called docker and add users to it. When the docker daemon starts, it makes the ownership of the Unix socket read/writable by the docker group.

docker进程使用 Unix Socket 而不是 TCP 端口。而默认情况下,Unix socket 属于 root 用户,因此需要 root权限才能访问。

3 解决方法

  1. sudo groupadd docker #添加docker用户组
  2. sudo gpasswd -a $USER docker #将当前用户添加至docker用户组
  3. newgrp docker #更新docker用户组

image.png

4 检查是否更新成功

再次执行”docker version”命令,发现不再出现”Got permission denied”权限报错
image.png