近期Docker Hub因为一些原因没有办法访问,故准备自己搭建一个Docker Hub的镜像网站使用。
推荐docker镜像:https://docker.mirrors.aster.edu.pl
前提
- 一台能够访问到Docker Hub的服务器(中国大陆外)
- 服务器要安装docker和docker-compose
- 此镜像服务器要有一定的存储空间供镜像保存(可以下载完就删掉,不用一直保存在服务器上)
满足以上两个条件就可以进行镜像的搭建了
安装
首先在准备当作镜像的服务器上创建一个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拉取的速度,取决于客户端连接到镜像服务器的速度,这个原理和正常的镜像站都一样。
镜像站搭建完毕后,每当用户拉取新的镜像时都会在本地拉取一份,这样下一次有用户拉取此镜像的时候就可以直接从本地反馈给用户,而不是需要从上游拉取后再给到客户。
但是这样的逻辑会导致硬盘空间较小的服务器出现问题,所以建议如果硬盘空间比较小的用户,可以每隔一段时间清理一下存储空间,以防服务器爆满。