搭建docker registry私服,并且支持https推送

搭建docker registry私服,并且支持https推送

一、为什么写这篇文章

网上关于搭建docker registry的文章一大把,但是都是配置为http方式推送,且需要显示端口,这个在真正项目使用中,肯定不这么用,都是直接使用类似下面这条命令这样推送,但是docker registry直接启动之后如果不配置,使用下面的命令推送又会报错,于是打算自己写一篇记录一下,一是方便自己后来查看,二来分享给大家避免再浪费时间去试错。

bash 复制代码
# 示例命令,实际操作时镜像及仓库域名自行替换
docker tag nginx my.registry.com/nginx
docker push my.registry.com/nginx

未配置前,直接使用域名推送会报错

二、搭建过程

1.生成SSL证书

如果是生产环境直接从云服务商(如腾讯云、阿里云)申请受信任的SSL证书。我这里是本地的私服,直接使用命令生成

bash 复制代码
# 创建目录
mkdir -p /etc/docker/certs.d/my.registry.com
# 生成ssl证书 域名需要替换成实际自己的
openssl req -newkey rsa:4096 -nodes -sha256 \
  -keyout /etc/docker/certs.d/my.registry.com/domain.key \
  -x509 -days 365 -out /etc/docker/certs.d/my.registry.com/domain.crt \
  -subj "/CN=my.registry.com" \
  -config <(cat /etc/pki/tls/openssl.cnf <(printf "[req]\nsubjectAltName=DNS:my.registry.com"))

2.运行registry

bash 复制代码
# 拉取registry镜像
docker pull registry 
# 运行镜像
docker run -d \
  --name registry \
  -p 443:5000 \
  -p 5000:5000 \
  -v /etc/docker/certs.d/my.registry.com:/certs\
  -v /usr/local/registry:/var/lib/registry \
  -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt \
  -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key \
  registry

三、验证

1.初步验证

bash 复制代码
[root@linux01 my.registry.com]# docker push my.registry.com/nginx
Using default tag: latest
Error response from daemon: Missing client certificate domain.cert for key domain.key

发现还是推送不上去,但是这里的提示很明显,就是缺少domain.cert文件
2.解决问题

bash 复制代码
# 进入容器内部
docker exec -it registry /bin/sh
# 拷贝文件 domain.cert
cp /certs/domain.crt /certs/domain.cert

3.再次验证

如果你直接将上面命令中的domain.crt直接写成domain.cert,那么你可能会遇到这个错,所以还是按照步骤来执行吧。

补充:

假设registry在A机器搭建的,现在想在B机器上使用docker push,只需要将A机器生成的ssl证书相关文件拷贝到B机器上,就可以执行push了

相关推荐
七夜zippoe37 分钟前
压缩与缓存调优实战指南:从0到1根治性能瓶颈(四)
运维·docker·容器
2501_916007471 小时前
iOS 混淆实战,多工具组合完成 IPA 混淆、加固与发布治理(iOS混淆|IPA加固|无源码混淆|App 防反编译)
android·ios·小程序·https·uni-app·iphone·webview
2501_915918411 小时前
怎么上架 App?iOS 应用上架完整流程详解与跨平台发布实战指南
android·ios·小程序·https·uni-app·iphone·webview
2501_916008891 小时前
iOS 混淆工具链实战 多工具组合完成 IPA 混淆与加固(iOS混淆|IPA加固|无源码加固|App 防反编译)
android·ios·小程序·https·uni-app·iphone·webview
一念一花一世界1 小时前
Arbess从入门到实战(16) - 使用Arbess+Gitee实现K8s自动化部署
ci/cd·云原生·容器·kubernetes·tiklab
java_logo2 小时前
Docker 部署 MinerU 教程:打造你的本地 PDF 智能处理中心
linux·运维·人工智能·docker·ai·容器·aigc
LCG元2 小时前
Docker容器化实战:将你的SpringBoot应用一键打包部署(三)-配置告警和自动扩缩容
后端·docker
明月与玄武3 小时前
Wireshark 网络抓包分析:JSON 和 HTTPS!
https·wireshark·json
编程爱好者熊浪3 小时前
测试需要使用HTTPS,怎么申请一个免费的测试域名
网络协议·http·https
技术杠精3 小时前
Docker Swarm之Java 应用部署与平滑更新
java·docker·容器