Docker 构建私有仓库
Posted Time-Traveler
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Docker 构建私有仓库相关的知识,希望对你有一定的参考价值。
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目录中
- 云服务器一般都提供免费的证书,直接下载即可
- 可以自签证书
创建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
以上是关于Docker 构建私有仓库的主要内容,如果未能解决你的问题,请参考以下文章