Got permission denied while trying to connect to the Docker daemon socket at unix 问题解决方案

问题描述

gitlab 使用 shell 脚本自动推送镜像,脚本如下:

#!/usr/bin/env bash
SHA=$1
SHASHORT=${SHA:0:8}
data=`sudo docker images | grep $SHASHORT | awk '{print $1":"$2}'`
arr=(${data//\\n/ })
for i in ${arr[@]}
do
    echo "推送镜像 starting $i"
    sudo docker push $i
    echo "推送镜像成功 $i"
done

报错信息

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

解决方案

将用户添加到Docker组
执行 sudo usermod -aG docker <username>,其中 <username> 是你的用户名。
退出并重新登录以使组更改生效。

修改脚本,增加当前用户打印信息

#!/usr/bin/env bash
echo "当前用户是: $(whoami)"
SHA=$1
SHASHORT=${SHA:0:8}
data=`sudo docker images | grep $SHASHORT | awk '{print $1":"$2}'`
arr=(${data//\\n/ })
for i in ${arr[@]}
do
    echo "推送镜像 starting $i"
    sudo docker push $i
    echo "推送镜像成功 $i"
done

gitlab 后台打印用户为 gitlab-runner

设置用户权限即可

sudo usermod -aG docker gitlab-runner

gitlab 再次执行 shell 脚本,推送成功

请添加图片描述