0

Docker Hub镜像搭建|解决Docker Hub访问不到的问题|搭建私有镜像站

Share
Avatar photo
  • 2024 年 6 月 9 日

近期Docker Hub因为一些原因没有办法访问,故准备自己搭建一个Docker Hub的镜像网站使用。

推荐docker镜像:https://docker.mirrors.aster.edu.pl

前提

  1. 一台能够访问到Docker Hub的服务器(中国大陆外)
  2. 服务器要安装docker和docker-compose
  3. 此镜像服务器要有一定的存储空间供镜像保存(可以下载完就删掉,不用一直保存在服务器上)

满足以上两个条件就可以进行镜像的搭建了

安装

首先在准备当作镜像的服务器上创建一个docker-compose.yaml

version: "3"
services:
  registry:
    image: library/registry:latest
    ports:
      - 5000:5000
    volumes:
      - <path-to-store-images>:/var/lib/registry
    environment:
      TZ: Asia/Hong_Kong
      REGISTRY_PROXY_REMOTEURL: https://registry-1.docker.io # upstream
    restart: always

文件中的<path-to-store-images>是要修改为镜像下载后的保存地址。

port为开放的端口,默认为5000,提供的是HTTP服务,可以通过Nginx或者Apache的Proxy功能转发到一个域名上,当然看个人需求就可以。

运行此Docker

docker-compose up -d

看到这里就证明已经启动了。

使用

在运行Docker的客户端找到配置文件,一般目录是 “/etc/docker/daemon.json”,在文件中添加一个参数

"registry-mirrors": ["<Mirror URL>"]

<Mirror URL>替换为能访问到刚才搭建的镜像地址,比如:http://7.7.7.7:5000,根据个人情况进行修改。

可以看到已经成功拉取到了

注意

拉取速度取决于作为镜像的服务器从docker-hub拉取的速度,取决于客户端连接到镜像服务器的速度,这个原理和正常的镜像站都一样。

镜像站搭建完毕后,每当用户拉取新的镜像时都会在本地拉取一份,这样下一次有用户拉取此镜像的时候就可以直接从本地反馈给用户,而不是需要从上游拉取后再给到客户。

但是这样的逻辑会导致硬盘空间较小的服务器出现问题,所以建议如果硬盘空间比较小的用户,可以每隔一段时间清理一下存储空间,以防服务器爆满。