diff --git a/CT124_Registry使用_20260622.md b/CT124_Registry使用_20260622.md new file mode 100644 index 0000000..12a22ce --- /dev/null +++ b/CT124_Registry使用_20260622.md @@ -0,0 +1,82 @@ +# CT124 私有 Docker Registry — 使用說明 + +> 主機:CT124(192.168.42.124,Ubuntu 24.04 LXC) | 位置:`/opt/registry` +> 元件:`registry:2`(:5000)+ `joxit/docker-registry-ui`(:8081) + +--- + +## 一、架構 + +| 元件 | 容器 | Port | 對外網址(NPM 反代,HTTPS) | +|---|---|---|---| +| Registry | `registry` | `5000` | `https://registry.lotimmy.com` | +| Web UI | `registry-ui` | `8081` | `https://registry-ui.lotimmy.com` | + +- UI 不直接打 registry,而是在 Docker 內網 `NGINX_PROXY_PASS_URL=http://registry:5000` 取資料。 +- 開了 `REGISTRY_STORAGE_DELETE_ENABLED=true` + UI `DELETE_IMAGES=true` → **可從 UI 刪 image**。 +- 資料存在 `./registry_data`(對應容器 `/var/lib/registry`)。 + +## 二、兩種存取路徑 + +**A. 對外 / 跨機(推薦):走 HTTPS,免設定** +``` +registry.lotimmy.com/ +``` + +**B. 內網直連 :5000(HTTP):用戶端需先信任這個 insecure registry** +```jsonc +// /etc/docker/daemon.json(CT124 本機已設好;其他機器要推才需加) +{ "insecure-registries": ["192.168.42.124:5000"] } +``` +改完 `systemctl restart docker`。 + +## 三、推送 image + +```bash +# 1. tag 成 registry 的命名空間 +docker tag my-app registry.lotimmy.com/my-app +# 或內網:docker tag my-app 192.168.42.124:5000/my-app + +# 2. push +docker push registry.lotimmy.com/my-app + +# 3. 別台機器拉 +docker pull registry.lotimmy.com/my-app +``` + +## 四、查詢 + +```bash +# 所有 repo +curl https://registry.lotimmy.com/v2/_catalog +# 某 repo 的 tags +curl https://registry.lotimmy.com/v2/my-app/tags/list +``` +或直接開 UI:`https://registry-ui.lotimmy.com`。 +(目前內容:`files-to-prompt`、`speedtest-ookla`) + +## 五、刪 image 與回收空間 + +刪 tag/manifest(UI 按刪除,或 API)只是標記,**不會真的釋放磁碟**。要回收: + +```bash +# 在 CT124 上 +docker exec registry registry garbage-collect /etc/docker/registry/config.yml +# 視版本可能要重啟讓 UI 同步 +docker restart registry +``` + +## 六、維運 + +```bash +cd /opt/registry +docker compose up -d # 啟動 / 套用變更(start_docker_registry.sh 也是做這件事) +docker compose logs -f registry +docker compose restart +``` + +## 七、注意事項 + +- **沒有帳號密碼驗證**:registry 本身未設 htpasswd,對外安全完全靠 NPM 反代那層。內網 `:5000` 等於對 LAN 全開,push/pull/delete 都不擋。要鎖就在 registry 加 `REGISTRY_AUTH=htpasswd` 或在 NPM 上加 basic auth。 +- 對外 443 經 NPM → 依賴 docker daemon 與 NPM 容器(見 [`CT124_故障復原_20260529.md`](CT124_故障復原_20260529.md) 的相依鏈);docker 掛了 `registry.lotimmy.com` 也會跟著不通,內網 `:5000` 仍可用。 +- `myfile.txt` 是舊的手記草稿,正式說明以本文為準。 diff --git a/README.md b/README.md index 76dd35f..c179b19 100644 --- a/README.md +++ b/README.md @@ -12,3 +12,4 @@ Claude Code 工作規範見 [`CLAUDE.md`](CLAUDE.md)。 |---|---|---| | [CT124_故障復原_20260529.md](CT124_故障復原_20260529.md) | CT124 | 硬斷電後 Docker/Tailscale 全面當機的連鎖故障復原(38/38 容器、零資料遺失) | | [CT124_Jellyfin播放-11850_20260622.md](CT124_Jellyfin播放-11850_20260622.md) | CT124 | iOS 原生 AVPlayer 播 AC3-in-fMP4 報 `-11850`,關「原生播放器」即解;伺服器無誤 | +| [CT124_Registry使用_20260622.md](CT124_Registry使用_20260622.md) | CT124 | 私有 Docker Registry(`registry.lotimmy.com` / UI)推拉、刪除回收、維運說明 |