docker

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > 云和虚拟化 > docker > Docker 镜像加速站

Docker搭建镜像加速站的四种方法实现

作者:JimKKu

本文介绍了四种搭建 Docker 镜像加速站的方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

前言

之前因为学习原因,购买了一台海外服务器,使用过程中,我发现它拉取 Docker 镜像十分方便,于是乎就长时间作为一个 Docker 中间站来使用,通过 Docker pull + Docker save + scp + Docker load使用着,但是这样太麻烦了,每次获得一个镜像,我都要四个步骤,而且服务器带宽很小,拉取挺慢、传下来更慢,给我用的糟心的不行,因此,经过两天的仔细处理,部署了一个 Docker 镜像加速站,试了下速度还可以,下面是过程中我用的几种方法,每种方法的优劣我都进行一些介绍。

方法一: Nexus

官网 | Github

优点:快速部署

缺点:需要至少1G的运存,否则无法启动或启动后会抛异常

支持:Docker、Maven、npm、PyPI

如果你的服务器有足够运存的话,那这个方法还是很推荐的,使用下方命令一键启动即可:

  1. 启动
docker run -d -p 8081:8081 -p 8082:8082 --name nexus sonatype/nexus3
  1. 随后在编辑/etc/docker/daemon.json文件,在JSON中加入下方内容即可:
{
  "registry-mirrors": ["http://xxxx.com:8082"]
}

应该也可以直接使用IP

  1. 加载配置并重启 Docker
sudo systemctl daemon-reload
sudo systemctl restart docker

方法二: Harbor

优点:支持私有镜像仓库 、 也能加速

缺点:需要至少2G的运存、需要自己编写配置文件

支持:Docker、Helm Chart、OCI 镜像

  1. 部署
# 使用 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
  1. 使用

编辑/etc/docker/daemon.json文件,加入以下内容:

{  "registry-mirrors": ["https://your-harbor-server.com"] }
  1. 加载配置并重启 Docker
sudo systemctl daemon-reload
sudo systemctl restart docker

方法三: Dragonfly

这个方法不介绍了,因为我也没有尝试,也需要较大运存才可以,支持 Docker、Containerd、Kubernetes

方法四: 小运存方案[我用的方案 | 推荐]

优点:运存需求极小

缺点:只能加速、缓存,不能当做镜像站,且操作起来略麻烦

支持:Docker

由于我的服务器只有1G运存且还要跑一些别的东西,实在无力招架上面三种方案,因此我绞尽GPT的脑汁,想出来了这种方案。

我这种方案用到了SSL证书,我不确定不用SSL证书行不行(因为我原来就有),建议可以通过Cloudflare申请个免费的SSL证书,网上教程很多,这里不多赘述(我就是这么做的),下面直接上正文:

  1. 创建一个文件夹,然后在里面创建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;
    }
}

注意这里面的路径不需要修改,只需要修改文件名即可,因为这不是服务器路径,是容器内部的路径。

  1. 在同一个目录下,创建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

  1. 然后给你的SSL文件夹拷贝到该路径下,并取名为certs

到这一步,你的文件夹下应该有三个东西:

  1. nginx.conf
  2. docker-compose.yml
  3. certs 文件夹(里面是SSL公私钥)
  1. 然后执行下面命令,启动编排文件:
docker compose up -d

此时会启动两个容器,然后你在本地的 Docker 配置文件中,加上你的加速地址即可,注意是https开头的哦。

  1. 使用

编辑/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 镜像加速站内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文