Docker搭建镜像加速站的四种方法实现
作者:JimKKu
前言
之前因为学习原因,购买了一台海外服务器,使用过程中,我发现它拉取 Docker 镜像十分方便,于是乎就长时间作为一个 Docker 中间站来使用,通过 Docker pull
+ Docker save
+ scp
+ Docker load
使用着,但是这样太麻烦了,每次获得一个镜像,我都要四个步骤,而且服务器带宽很小,拉取挺慢、传下来更慢,给我用的糟心的不行,因此,经过两天的仔细处理,部署了一个 Docker 镜像加速站,试了下速度还可以,下面是过程中我用的几种方法,每种方法的优劣我都进行一些介绍。
方法一: Nexus
优点:快速部署
缺点:需要至少1G的运存,否则无法启动或启动后会抛异常
支持:Docker、Maven、npm、PyPI
如果你的服务器有足够运存的话,那这个方法还是很推荐的,使用下方命令一键启动即可:
- 启动
docker run -d -p 8081:8081 -p 8082:8082 --name nexus sonatype/nexus3
- 随后在编辑
/etc/docker/daemon.json
文件,在JSON中加入下方内容即可:
{ "registry-mirrors": ["http://xxxx.com:8082"] }
应该也可以直接使用IP
- 加载配置并重启 Docker
sudo systemctl daemon-reload sudo systemctl restart docker
方法二: Harbor
优点:支持私有镜像仓库 、 也能加速
缺点:需要至少2G的运存、需要自己编写配置文件
支持:Docker、Helm Chart、OCI 镜像
- 部署
# 使用 Docker Compose 快速部署 wget https://github.com/goharbor/harbor/releases/download/v2.8.0/harbor-online-installer-v2.8.0.tgz tar -xzvf harbor-online-installer-v2.8.0.tgz cd harbor cp harbor.yml.tmpl harbor.yml vim harbor.yml # 修改 hostname、端口等配置 ./install.sh
- 使用
编辑/etc/docker/daemon.json
文件,加入以下内容:
{ "registry-mirrors": ["https://your-harbor-server.com"] }
- 加载配置并重启 Docker
sudo systemctl daemon-reload sudo systemctl restart docker
方法三: Dragonfly
这个方法不介绍了,因为我也没有尝试,也需要较大运存才可以,支持 Docker、Containerd、Kubernetes
方法四: 小运存方案[我用的方案 | 推荐]
优点:运存需求极小
缺点:只能加速、缓存,不能当做镜像站,且操作起来略麻烦
支持:Docker
由于我的服务器只有1G运存且还要跑一些别的东西,实在无力招架上面三种方案,因此我绞尽GPT的脑汁,想出来了这种方案。
我这种方案用到了SSL证书,我不确定不用SSL证书行不行(因为我原来就有),建议可以通过Cloudflare申请个免费的SSL证书,网上教程很多,这里不多赘述(我就是这么做的),下面直接上正文:
- 创建一个文件夹,然后在里面创建
nginx.conf
文件,内容如下:
server { listen 443 ssl; server_name docker_proxy; ssl_certificate /etc/nginx/certs/fullchain.cer; ssl_certificate_key /etc/nginx/certs/xxx.com.key; location / { proxy_pass http://registry:5000; } }
注意这里面的路径不需要修改,只需要修改文件名即可,因为这不是服务器路径,是容器内部的路径。
- 在同一个目录下,创建
docker-compose.yml
编排文件,内容如下:
version: '3' services: registry: image: registry container_name: registry-mirror restart: always environment: - REGISTRY_PROXY_REMOTEURL=https://registry-1.docker.io volumes: - ./registry:/var/lib/registry expose: - "5000" nginx: image: nginx container_name: registry-nginx restart: always ports: - "443:443" volumes: - ./nginx.conf:/etc/nginx/conf.d/default.conf:ro - ./certs:/etc/nginx/certs:ro depends_on: - registry
- 然后给你的SSL文件夹拷贝到该路径下,并取名为
certs
。
到这一步,你的文件夹下应该有三个东西:
- nginx.conf
- docker-compose.yml
- certs 文件夹(里面是SSL公私钥)
- 然后执行下面命令,启动编排文件:
docker compose up -d
此时会启动两个容器,然后你在本地的 Docker 配置文件中,加上你的加速地址即可,注意是https
开头的哦。
- 使用
编辑/etc/docker/daemon.json
文件,加入以下内容:
{ "registry-mirrors": ["https://xxxx.com"] }
加载配置文件并重启docker
sudo systemctl daemon-reload sudo systemctl restart docker
其它
在一些Docker Desktop客户端版本中(比如Mac),是没有/etc/docker/daemon.json
文件的,你需要右上角设置里面手动添加配置,如下:
红框内便是你要编辑的内容,因涉及隐私,我打了 马 赛 克
最后,来一张封面:
到此这篇关于Docker搭建镜像加速站的四种方法实现的文章就介绍到这了,更多相关Docker 镜像加速站内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!