modified | Thursday 1 May 2025 |
---|
Friday, June 25, 2021 at 10:31
Docker Compose 部 署 配 置 和 使 用 Registry 私 有
镜 像 仓 库
Stille
思 有 云
前 言
早 前 本 站 介 绍 过 使 用 docker 官 方 registry 来 部 署 加 速 镜 像 仓 库 和 私 有 镜
像 仓 库 的 教 程 . 近 期 由 于 需 要 使 用 gcr.io 谷 歌 的 镜 像 仓 库 , 发 现 国 内 无 法
访 问 , 于 是 就 着 手 在 公 网 搭 建 自 己 的 私 有 镜 像 仓 库 方 便 使 用 , 同 时 配 置
HTrTP8 和 账 号 密 码 确 保 安 全 .
本 文 将 安 装 部 署 ,Push,Pull 查 询 , 管 理 和 删 除 镜 像 等 基 础 功 能 分 享 给 大
家 .
y> 本 文 为 o 衍 如 需 转 载 请 联 系 作 者
获 得 授 权 , 并 注 明 转 载 地
部 署
安 装 服 务 端
[ 余 督 刀 育 oreen ] 怀 文 以 部 署 至 公 网 . 开 启 账 号 密 码 , 并 配 置 域 名 瓜
命 令 参 数 过 多 , 为 方 便 配 置 参 数 , 建 议 使 用 docker compose 部 署 .[/scodei]
创 建 htpasswd 账 号 密 码
安 装 服 务 端
希 人 o 1 命 林
命 令 参 数 过 多 , 为 方 便 配 置 参 数 , 建 议 使 用 docker compose 部 署 .[/scode]
创 建 htpasswd 账 号 密 码
启 动 一 个 一 次 性 容 器 用 于 创 建 账 号 密 码 . 密 码 文 件 路 径
7 河
以 /root/registry/htpasswd 为 例 , 账 号 密 码 以 admin 和 12345678 为 例 .
docker Fun –rm –entryPoint 飞
htpasswd httpd:2 -Bbn
admin 12345678 > /root/registry/htpasswad
docker-composeyml
[scode type=“share“] volumes 挂 载 htpasswd 密 码 文 件 , 数 据 目 录 , 时 区
文 件 . 配 置 文 件 config.yml 作 为 高 级 用 户 可 选 挂 载 .
environment 环 境 变 量 开 启 认 证 , 并 开 启 删 除 镜 像 功 能 .[/scodej]
version: “3“
services :
registryY :
image: registry : 2
container_name: KegistIY
volumes :
水 - ./config.yml: /etc/docker/registry/config .yml
version: “3“
services :
registryY :
image: registry : 2
container_name: KegistIY
volumes :
水 - ./config.yml: /etc/docker/registry/config .yml
PortS :
environment :
networkS :
restart: alLwayS
networkS :
registryY :
启 动
docker-compose up -Qd
成 功 启 动 后 私 有 镜 像 仓 库 内 网 地 址 为 : 192.168.1.5:5000
配 置 域 名
由 于 registry 在 公 网 访 问 默 认 需 使 用 HrrPs 协 议 , 博 主 使 用 nginx 配 置 反
向 代 理 和 证 书 . 具 体 配 置 文 件 参 考 如 下 :
由 于 registry 在 公 网 访 问 默 认 需 使 用 HrrPs 协 议 , 博 主 使 用 nginx 配 置 反
向 代 理 和 证 书 . 具 体 配 置 文 件 参 考 如 下 :
upstream registry t
server 172.17.0.1:5000;
}
server
1Listen 80;
server_name “_registry.Yourdomain .com;
return 301 https://registry.Yourdomain.co…$request_uri ;
}
server
1isten 443 ss1;
server_name “_registry.Yourdomain .com;
gzip _on;
ssl_certificate /Yyour_ss1_path/registry.Yourdomain.com.crt;
ss1_certificate_key
/your_ss1_path/registry.Yyourdomain.com.key ;
Location / {
Proxy_redirect off;
proxy_pass http: //registry;
proxy_set_header “Host \(http_host; proxy_set_header “X-Real-IP \)
remote_addr ;
proxy_set_header “X-Forwarded-5s1 on;
proxy_set_header “X-Forwarded-For
\(proxy_add_x_forwarded_for ; proxy_set_header “X-Forwarded-Proto \)
scheme ;
proxy_set_header “X-Frame-Options SRMEORIGIN ;
clLient_max_body_size 100m;
clLient_body_buffer_size 128k;
Proxy_buffer_size 4K ;
Proxy_buffers 4 32Kk;
Proxy_busy_buffers_size 64K;
Proxy_buffer_size 4K ;
Proxy_buffers 4 32Kk;
Proxy_busy_buffers_size 64K;
Proxy_temp_file_write_5size “64k;
docker Login registry.Yourdomain .com
江 使 用 上 文 创 建 的 账 号 密 码 admin 12345678 登 录
登 出
docker Logout registry.Yourdomain .com
Push
将 现 有 镜 像 tag 为 私 有 仓 库 镜 像 名
docker images
江 获 取 现 有 镜 像 的 IMAGE ID
docker tag 102816blee7d registry.Yourdomain.com/mysql: 8 .0 .13
Push 至 私 有 镜 像 仓 库
docker push registry.Yourdomain .com/mysqlL: 8 .0 .13
Pull
docker pull registry.Yourdomain.com/mysqlL: 8 .0 .13
docker pull registry.Yourdomain.com/mysqlL: 8 .0 .13
管 理
查 看 镜 像 仓 库 清
curl1 -u admin:12345678 -X GET
https: //registry.Yourdomain .com/V2/_catalLog
查 看 镜 像 tag 清 单
curl1 -u admin:12345678 -X GET
https: //registry.Yourdomain.com/V2/mysq1l/tags/1ist
删 除 镜 像
[scode type=“yellow「“] 确 保 docker-compose.ym1l 环 境 变 量 中 开 启
REGISTRY STORAGE DELETB ENABLED=true[/Scode]
获 取 镜 像 digest hash
curl1 -u admin:12345678 –header “Rccept:
appl1ication/vnd.docker .distribution .manifest .V2+json“ -I -X GET
https: //registry.Yourdomain.com/v2 /mysql/manifests/ 8 . 0 .13
江 获 取 digest hash 如 下
Sha256:45a2a291xxx223123fc03d9be551e362b460exxs56787736919baa
删 除 镜 像 清
curl1 -u admin:12345678 -I -X DELETE
https: //registry.Yourdomain.com/V2 /mysql/manifests/sha256 : 45a2a291XXX2
清 理 磁 盘 空 间
docker _exeC fegistY bin/ egistY gaxbage-cp11ect
[scode type=“yellow「“] 确 保 docker-compose.yml 环 境 变 量 中 开 启
REGISTRY_STORAGE_DELETE FNABLED=true[/Scodej]
获 取 镜 像 digest hash
curl1 -u admin:12345678 –header “Rccept:
appl1ication/vnd.docker .distribution .manifest .V2+json“ -I -X GET
https: //registry.Yourdomain.com/v2 /mysql/manifests/ 8 . 0 .13
江 获 取 digest hash 如 下
Sha256:45a2a291xxx223123fc03d9be551e362b460exxs56787736919baa
删 除 镜 像 清
curl1 -u admin:12345678 -I -X DELETE
https: //registry.Yourdomain.com/V2/mysql/manifests/sha256 : 45a2a2 91XXX2 2
清 理 磁 盘 空 间
docker exec registry bin/registry garbage-collLect
/etc/docker/registry/config .yml
手 动 删 除 目 录
完 成 上 述 操 作 后 人 $ 目 录 文 件 , 如 不 删 除 依 旧 可
以 被 上 述 查 看 镐 像 仓 库 的 命 令 查 询 到 结 果 .
依 照 上 文 示 例 , 挂 载 存 储 目 录 路 f 王 如 下 “
@> ./registry/docker/registry/N2/repositories
结 语
更 多 信 息 请 参 考 官 方 文 档