Registry 是 Docker 镜像的 local 存储管理服务, Registry UI 是对 Registry 进行图形化展示的页面工具.
Registry 除了使用界面访问之外, 还支持 CrudAPI 访问: Registry API
安装 Registry 和 Registry UI
0. 规划服务器
服务器: xxx.xxx.85.102
域名: docker-hub.xxx.com
证书文件: docker-hub.xxx.com.pem
和 docker-hub.xxx.com.key
端口: Registry 默认端口 5000
, Registry UI 使用 18080
映射到默认的 80
上.
1. 生成用户名密码
htpasswd -Bbn username password >> ./auth/htpasswd
2. 申请证书
申请免费的 TLS 证书, 将证书 docker-hub.xxx.com.pem
和 docker-hub.xxx.com.key
放到 ./certs
文件夹下.
将证书对应域名 docker-hub.xxx.com
解析到服务器 xxx.xxx.85.102
.
3. 修改 Registry 配置文件
./conf/config.yml
文件. Access-Control-Allow-Origin
数组内只支持填写一个内容, 写 http://docker-hub.xxx.com:18080
. 其中协议为 http
, 域名为 docker-hub.xxx.com
, 端口是 Registry UI 端口 18080
.
4. 修改 Compose 配置文件
REGISTRY_HTTP_TLS_CERTIFICATE
为 pem 证书文件, REGISTRY_HTTP_TLS_KEY
为 key 证书文件.
关于跨域问题的解决
docker-compose.yml 中的 REGISTRY_URL: https://docker-hub:5000
在 networks
在同一个网络下时, 会自动更改请求头信息
./conf/config.yml 中的 Access-Control-Allow-Origin: ["http://docker-hub.xxx.com:18080"]
只支持填写一个地址, 不能写 “*“ 和多个地址.
可以仔细阅读 Run the static interface 和 Using CORS 两部分, 再结合我前面总结的两点.