
AI制作
经常在docker pull一个镜像出现失败的情况,尤其是一些镜像比较大,不得不再次执行docker pull,有时候需要执行个三四次才能完全拉取成功(网络或者仓库代理等各种因素)。我翻阅了不少资料没有找到一个合适的docker pull内置的重试机制,基本是借助于脚本来实现重试。
我们可以创建一个shell脚本文件docker-pull,并将其作为命令行工具使用,后面直接跟镜像地址作为参数,替代docker pull命令。这样就不需要修改脚本,直接调用这个docker-pull工具即可。
新建一个docker-pull.sh 文件。参考脚本为重试5次,每次间隔10秒,具体脚本内容如下:
#!/bin/bash# 检查是否提供了镜像地址if [ -z "$1" ]; then echo "用法: $0 <镜像地址>" exit 1fiIMAGE_NAME="$1"MAX_RETRIES=5RETRY_INTERVAL=10for (( i=0; i<MAX_RETRIES; i++ )); do echo "尝试第 $(($i + 1)) 次拉取镜像: $IMAGE_NAME" if docker pull "$IMAGE_NAME"; then echo "镜像拉取成功!" exit 0 else echo "镜像拉取失败,等待 $RETRY_INTERVAL 秒后重试..." sleep $RETRY_INTERVAL fidoneecho "多次尝试拉取镜像失败,请检查网络或镜像源。"exit 1然后添加可执行权限并复制到默认$PATH,
如/usr/local/sbin,/usr/local/bin,/usr/sbin等等。具体参考如下:
chmod +x docker-pull.shcp docker-pull.sh /usr/bin/docker-pulldocker-pull victoriametrics/victoria-logs经过测试,docker pull 镜像拉取失败会重试多次,可以实现需求。
