Docker搜索镜像版本
自从2023年5月中旬,著名Docker 容器平台: http://hub.docker.com “不知” 何种原因国内均无法正常访问了。
国内使用docker面临两个问题:
镜像无法下载
无法查看镜像版本
解决方案:
1、配置国内镜像源
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://xxxx.mirror.aliyuncs.com",
"https://hub-mirror.c.163.com"
]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
其中第一个是向aliyun申请的,个人应该都是不一样的
2、使用shell脚本去搜索镜像最新版本
找了不少文档,发现他们的查询脚本都已经过时,找不到正确的搜索路径。在使用jenkins时,发现有个插件 image-tag-parameter 可以查询镜像版本,从里面找到最新的查询路径。
仿照其他人的脚本写了下
vim /usr/bin/dockertag
#!/bin/bash
repo_url=https://hub-mirror.c.163.com
image_name=$1
tag=$2
if [[ -n "${image_name}" ]]; then
echo "Search image ${image_name} on ${repo_url}"
else
echo "Error! You should input the name of image!"
exit 1
fi
if [[ "${image_name}" != *"/"* ]]; then
image_name="library/${image_name}"
fi
tag_list=$(curl -s -S "${repo_url}/v2/${image_name}/tags/list" | jq '.tags')
for((i=$(echo ${tag_list} | jq 'length')-1;i>=0;i--)); do
t=$(echo $tag_list | jq ".[$i]" | sed 's/\"//g')
if [[ -z "${tag}" ]]; then
echo "$image_name:$t"
elif [[ "${t}" == *"${tag}"* ]]; then
echo "$image_name:$t"
fi
done
chmod 741 /usr/bin/dockertag
注意:脚本需要依赖 jq
工具,没有的安装一下
yum install jq -y
Example:
dockertag mysql;
dockertag nacos/ncaos-server
dockertag redis 6
最后新人真的需要鼓励,点个收藏和关注吧 o(╥﹏╥)o