Docker 构建私有仓库

本文详细介绍如何搭建支持HTTP及HTTPS的私有Docker Registry,包括配置步骤、常见错误处理及镜像的上传与拉取过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


HTTP版本:

http版本的非常简单,直接运行一条命令即可
docker run -d -p 5000:5000 --restart=always --name registry registry

http的仓库想要上传镜像需要配置一下,否则会push失败:

vim /etc/docker/daemon.json
# 添加 "insecure-registries": ["your_domain:5000"]

在这里插入图片描述

HTTPS支持

证书:

mkdir certs
# 将证书分别命名为domain.crt,domain.key并放入certs目录中
  1. 云服务器一般都提供免费的证书,直接下载即可
  2. 可以自签证书

创建docker服务:

# 该命令存在问题,参数写错了,放在这里只是为了查看错误日志,停止registry并重试,可以跳过。
docker run -d --restart=always --name registry -v "$(pwd)"/certs:/certs -e REGISTRY_HTTP_ADDR=0.0.0.0:443 -e REGISTRY_TLS_CERTIFICATE=/certs/domain.crt -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key -p 433:433 registry:2

使用 docker logs -f registry 查看日志:

docker logs -f registry

在这里插入图片描述
发现创建的时候写错了参数,需要先停掉registry:

docker container stop registry

修改后(将当前certs目录挂载到镜像中):

docker run -d \
  --restart=always \
  --name registry \
  -v "$(pwd)"/certs:/certs \
  -e REGISTRY_HTTP_ADDR=0.0.0.0:443 \
  -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt \
  -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key \
  -p 443:443 \
  registry:2

验证是否成功(访问 https://your_domain/v2):
在这里插入图片描述
并且log中会记录访问日志:
在这里插入图片描述

上传镜像:

docker tag nginx your_domain/my-nginx
docker push your_domain/my-nginx

在这里插入图片描述
这里有个timeout但是并没有影响上传,暂时忽略了。
查看镜像(访问:https://your_domain/v2/_catalog):
在这里插入图片描述

拉取镜像:

docker pull your_domain/my-nginx

在这里插入图片描述
docker 提供了一些接口可供访问:

#查询镜像
curl  <仓库地址>/v2/_catalog
 
#查询镜像tag(版本)
curl  <仓库地址>/v2/<镜像名>/tags/list
 
#删除镜像API
curl -I -X DELETE "<仓库地址>/v2/<镜像名>/manifests/<镜像digest_hash>"
 
#获取镜像digest_hash
curl  <仓库地址>/v2/<镜像名>/manifests/<tag> \
    --header "Accept: application/vnd.docker.distribution.manifest.v2+json"

Nginx转发的方式:

查到另一种方式,安装nginx进行转发,https由nginx去配置,同样需要证书文件,请查看 nginx配置https

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值