搭建个人 Docker Registry 代理与客户端配置指南

> 适用场景:国内网络环境,官方 Docker Hub 镜像受限,想通过国外服务器自建代理 Registry 或做临时缓存。

## 1️⃣ 服务端部署

### 1.1 创建数据目录

选择服务器上一个适合存放 Registry 数据的目录(如 `/opt/registry/data`),并创建:

“`bash
sudo mkdir -p /opt/registry/data
“`

### 1.2 启动 Docker Registry 容器

使用官方 `registry:2` 镜像,搭建一个代理模式的 Registry:

“`bash
sudo docker run -d \
-p 5000:5000 \
–restart=always \
–name registry \
-v /opt/registry/data:/var/lib/registry \
-e REGISTRY_PROXY_REMOTEURL=https://registry-1.docker.io \
registry:2
“`

说明:

* `-p 5000:5000`:容器端口 5000 映射到宿主机。
* `REGISTRY_PROXY_REMOTEURL`:开启代理模式,将请求转发到 Docker Hub。
* `–restart=always`:服务器重启自动启动。

> 💡 如果你不希望缓存,可在客户端 pull 之后直接清理 `/opt/registry/data`,或者直接忽略缓存(详见清理策略)。

## 2️⃣ Nginx 反向代理配置

为了让客户端通过 HTTPS 安全访问 Registry,可用 Nginx 做反向代理。

### 2.1 创建 Nginx 配置文件

假设域名 `hub.850899.xyz`:

“`nginx
server {
listen 443 ssl;
server_name hub.850899.xyz;

ssl_certificate /etc/ssl/850899.xyz/fullchain.pem;
ssl_certificate_key /etc/ssl/850899.xyz/privkey.pem;

location / {
proxy_pass http://127.0.0.1:5000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}

server {
listen 80;
server_name hub.850899.xyz;
return 301 https://$host$request_uri;
}
“`

说明:

* 代理 HTTPS 流量到本地 Docker Registry。
* 自动跳转 HTTP 到 HTTPS。
* 使用官方或自签 SSL 证书保证安全。

### 2.2 测试并重载 Nginx

“`bash
sudo nginx -t
sudo nginx -s reload
“`

## 3️⃣ 数据清理与管理

### 3.1 缓存清理策略

如果你**不想长期占用磁盘空间**:

* **方法 1:每日定期清理**
在 `/etc/cron.daily/registry-gc` 创建脚本:

“`bash
#!/bin/bash
docker exec registry registry garbage-collect /etc/docker/registry/config.yml
docker exec registry registry rm -f
“`

然后设置可执行权限:

“`bash
sudo chmod +x /etc/cron.daily/registry-gc
“`

* **方法 2:手动清理**
pull 完镜像后,可直接删除缓存文件夹(例如 `/opt/registry/data/docker/registry/v2/blobs`),只保留需要的镜像即可。

> ⚠️ **注意**:不要随意删除 `_manifests` 或 `_layers` 中的文件,否则 Registry 数据可能损坏。

## 4️⃣ 客户端 Docker 配置

### 4.1 修改 daemon.json

在国内客户端机器上配置:

“`json
{
“registry-mirrors”: [
“https://hub.littlediary.cn”,
“https://docker.m.daocloud.io”
],
“insecure-registries”: [
“hub.850899.xyz:443”
]
}
“`

说明:

* `registry-mirrors`:官方 Docker Hub 镜像加速源。
* `insecure-registries`:自建 Registry 或自签证书的 HTTPS Registry。
* 支持未来追加新源,灵活扩展。

### 4.2 重启 Docker

“`bash
sudo systemctl daemon-reexec
sudo systemctl daemon-reload
sudo systemctl restart docker
“`

### 4.3 测试 pull

“`bash
# 官方镜像走加速源
docker pull nginx:latest

# 自建 Registry
docker pull hub.850899.xyz/library/nginx:latest
“`

## 5️⃣ 使用场景与应用

### 5.1 常见场景

1. **国内网络无法直接访问 Docker Hub**

* 服务器先在国外 pull 镜像
* 国内客户端通过自建 Registry pull

2. **缓存重要镜像,节省流量**

* 服务器可作为镜像中心
* 客户端重复使用同一镜像无需再拉官方源

### 5.2 清理与维护

* **定期清理缓存**:避免占用过多磁盘空间
* **监控磁盘和带宽**:尤其服务器存储有限
* **灵活扩展源**:新增官方加速或自建 Registry

## 6️⃣ 总结

通过以上配置,你可以实现:

* 国内客户端可安全访问 Docker 镜像,无需直连 Docker Hub。
* 可以选择是否缓存镜像,灵活控制服务器磁盘占用。
* 配置可扩展,方便未来新增加速源或 Registry。
* 结合 Nginx,保证 HTTPS 安全访问。

> 💡 提示:对于个人使用,完全不缓存也是可行的,服务器只作为临时 pull 跳板即可,节省存储空间。

版权声明

本网站名称:个人知识记录
本文链接:https://isrv.cn/docker-registry/
本网站的文章部分内容可能来源于网络,仅供学习与参考,如有侵权,请联系站长进行核实删除。
转载本站文章需要遵守:商业转载请联系站长,非商业转载请注明出处并附带原文链接!!!
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇