├── .github └── workflows │ └── ci.yaml ├── .travis.yml └── README.md /.github/workflows/ci.yaml: -------------------------------------------------------------------------------- 1 | on: 2 | push: 3 | schedule: 4 | - cron: '0 0 */1 * *' 5 | workflow_dispatch: 6 | 7 | name: Test Registry 8 | 9 | jobs: 10 | ci: 11 | runs-on: ubuntu-latest 12 | steps: 13 | - uses: docker-practice/actions-setup-docker@master 14 | with: 15 | docker_version: "20.10" 16 | docker_channel: test 17 | docker_buildx: false 18 | - run: docker version 19 | - run: docker info 20 | - name: Test 21 | run: | 22 | registrys=" 23 | cjie.eu.org 24 | cf-workers-docker-io-2cl.pages.dev 25 | dockerhub.timeweb.cloud 26 | docker.ketches.cn 27 | docker.m.daocloud.io 28 | docker.1ms.run 29 | docker.io 30 | docker.fxxk.dedyn.io 31 | dockerproxy.com 32 | hub.iyuu.cn 33 | hub-mirror.c.163.com 34 | hub.atomgit.com 35 | hub.docker.com 36 | registry.docker.com 37 | registry-1.docker.io 38 | mirror.gcr.io 39 | $ALIYUN_MIRROR 40 | " 41 | image="library/nginx:1.27.2-alpine" 42 | 43 | for registry in $registrys 44 | do 45 | echo ::group::Test $registry/$image 46 | docker pull $registry/$image \ 47 | && (echo -e "\033[32m$registry is good\033[0m" \ 48 | ; echo "::warning file=README.md,line=1,col=0::OK [ $registry ] is good") \ 49 | || (echo -e "\033[31m$registry is outdated\033[0m" \ 50 | ; echo "::error file=README.md,line=1,col=0::X [ $registry ] is outdated") 51 | docker rmi $registry/$image || true 52 | echo ::endgroup:: 53 | done 54 | 55 | IMAGE=busybox 56 | MIRROR=https://dockerhub.icu 57 | NUM_TRIALS=5 58 | 59 | echo "Testing $MIRROR with $IMAGE" 60 | 61 | total_time=0 62 | 63 | for i in $(seq 1 $NUM_TRIALS); do 64 | echo "Trial $i" 65 | start_time=$(date +%s.%N) 66 | docker pull $IMAGE 67 | end_time=$(date +%s.%N) 68 | elapsed_time=$(echo "$end_time - $start_time" | bc) 69 | total_time=$(echo "$total_time + $elapsed_time" | bc) 70 | docker rmi $IMAGE 71 | done 72 | 73 | average_time=$(echo "scale=2; $total_time / $NUM_TRIALS" | bc) 74 | echo "::warning $MIRROR is ok Average pull time: $average_time seconds " 75 | env: 76 | ALIYUN_MIRROR: ${{secrets.ALIYUN_MIRROR}} 77 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: shell 2 | 3 | services: 4 | - docker 5 | 6 | scripts: 7 | - docker version 8 | - docker info 9 | - docker pull nginx:1.17.6-alpine 10 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 测试国内 docker registry 镜像 | 测试结果请到 Actions 标签详情页查看 2 | 3 | https://github.com/yeasy/docker_practice/blob/master/install/mirror.md 4 | 通过上述几种方法,我们可以全面地测试Docker Hub镜像源的速度,选择最优的镜像源,以显著提升镜像拉取速度和开发效率。无论是直接拉取镜像、使用curl或wget测试响应时间和下载速度,还是编写脚本进行多次测试,这些方法都能帮助你做出最明智的选择 5 | --------------------------------------------------------------------------------