问题描述
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 脚本,推送成功