侧边栏壁纸
博主头像
pulic重定向 博主等级

行动起来,活在当下

  • 累计撰写 14 篇文章
  • 累计创建 15 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

本地搭建国内docker镜像服务从dockerhub拉取镜像

Administrator
2025-07-03 / 0 评论 / 0 点赞 / 86 阅读 / 0 字
温馨提示:
本文最后更新于2025-07-03,若内容或图片失效,请留言反馈。 部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

 

目前很多的Linux运维或爱好者,从dockerhub上拉取镜像到本地环境,通常无法正常拉取,主要是因为特殊原因导致。
很多都是在/etc/docker/daemon.json中添加参数registry-mirrors,加速镜像地址,那可能存在无法接通down镜像的情况。
那么,接下来我们如何从本地搭建一个dockerhub的镜像,帮助我们能够及时拉取镜像到本地环境中呢?

可参考docker镜像地址

Docker 镜像加速站集合 https://dockerproxy.xiaoxuan6.me/ 可能需要科学

搭建部署不是很难

材料

  • • 科学加速工具/订阅&节点

    • • flclash

    • • clash-meta / mihomo

    • • 订阅链接/节点

  • • docker/docker-compose

  • • 基础系统环境

    • • linux

    • • win

  • • github开源项目

    • Docker-Proxy

搭建说明

  • • 1、需要科学节点/代理,且能访问registry-1.docker.io

  • • 2、需要懂docker配置和使用,以及docker-compos基础

  • • 3、Linux基础

科学代理

这里可参考https://clash.abcd789.eu.org/archives/docker-composebu-shu-mihomo-zashboard

核心配置

docker-compose.yaml

version: '3.8'
services:
  ## docker hub
  dockerhub:
    container_name: reg-docker-hub
    image: dqzboy/registry:latest
    restart: always
    environment:
      - OTEL_TRACES_EXPORTER=none
      - http=http://192.168.100.80:8081
      - https=http://192.168.100.80:8081
      - HTTP_PROXY=http://192.168.100.80:8081
      - HTTPS_PROXY=http://192.168.100.80:8081
    volumes:
      - ./registry/data:/var/lib/registry
      - ./registry-hub.yml:/etc/distribution/config.yml
      #- ./htpasswd:/auth/htpasswd
    ports:
      - 51000:5000
    networks:
      - registry-net

这里http://192.168.100.80:8081 为科学代理IP+端口 ,需要用到科学节点

registry-hub.yml

version: 0.1
log:
  accesslog:
    disabled: true
  level: info
  formatter: text
  fields:
    service: registry
root@debian11:/100data/docker_proxy# cat registry-hub.yml
version: 0.1
log:
  accesslog:
    disabled: true
  level: info
  formatter: text
  fields:
    service: registry
    environment: staging
storage:
  cache:
    # 改为 blan 禁用 blob 描述符缓存,可解决docker pull error:unexpected EOF
    blobdescriptor: inmemory
  filesystem:
    rootdirectory: /var/lib/registry
  #inmemory: # 此存储驱动程序不会在运行期间保留任何数据,适合磁盘空间小的机器使用(但是会使用内存开销,只适合测试)
  maintenance:
    uploadpurging:
      enabled: false
  tag:
    concurrencylimit: 8
  delete:
    enabled: true

http:
  addr: :5000
  headers:
    X-Content-Type-Options: [nosniff]
    Access-Control-Allow-Origin: ['*']
    Access-Control-Allow-Methods: ['HEAD', 'GET', 'OPTIONS', 'DELETE']
    Access-Control-Allow-Headers: ['Authorization', 'Accept', 'Cache-Control']
    Access-Control-Max-Age: [1728000]
    Access-Control-Allow-Credentials: [true]
    Access-Control-Expose-Headers: ['Docker-Content-Digest']

health:
  storagedriver:
    enabled: true
    interval: 10s
    threshold: 3

proxy:
  remoteurl: https://registry-1.docker.io
  username: 
  password:
  ttl: 168h

启动 docker-compose up -d

接下来修改docker服务配置

Docker 配置镜像加速
修改文件 /etc/docker/daemon.json (如果不存在则创建)

sudo mkdir -p /etc/docker
sudo vi /etc/docker/daemon.json
{
    "registry-mirrors": [ "http://192.168.100.80:51000", "http://192.168.100.80:xxx" ],
    "insecure-registries": [ "192.168.100.80:51000", "192.168.100.80:xxx" ]
}
sudo systemctl daemon-reload
sudo systemctl restart docker

这里http://192.168.100.80:51000 是你本地的docker加速地址,一般是http + IP +端口 ,IP是要本地服务器网卡IP,不是127.0.0.1

接下来就去测试吧

docker pull nginx

 

0

评论区