主要参考了https://blog.tfm.ro/setup-and-run-a-standalone-private-docker-registry-v2/和https://www.cnblogs.com/lin1/p/6207348.html。
一、安装docker-distribution
yum install -y docker-distribution
安装完成后,启动服务:
systemctl enable docker-distribution.service systemctl start docker-distribution.service
二、配置config.yaml
在/etc/docker-distribution/registry目录下编辑config.yaml文件如下:
version: 0.1 log: fields: service: registry storage: cache: layerinfo: inmemory filesystem: rootdirectory: /var/lib/registry #可更改 http: addr: [仓库运行的IP地址]:[仓库运行的端口,可设为5000]
三、修改daemon.json
在/etc/docker目录下编辑daemon.json文件,在大括号里增加一行:
"insecure-registries": ["仓库IP:仓库端口"],
随后重启docker:
systemctl restart docker
这样就完成了私有仓库的搭建。
四、测试上传
用docker images查看已下载的镜像,选择一个,例如nginx,打上标签:
docker tag [nginx镜像的ID] [仓库IP]:[仓库端口]/nginx
之后,用docker push命令将打上标签后的镜像上传至私有仓库:
docker push [仓库IP]:[仓库端口]/nginx
看到类似于下面这样的提示后,说明上传成功:
4258832b2570: Pushed 683a28d1d7fd: Pushed d626a8ad97a1: Pushed latest: digest: sha256:b3cd8d196926586f70a060b1b61a7c34dd716effe0daf5cf68419ec0bc21ab3d size: 948
五、测试查询
Docker registry v2的API与v1差异非常大。例如,用下面的命令查看已上传的镜像:
curl -X GET http://仓库IP:仓库端口/v2/_catalog
应该能够返回:
{"repositories":["nginx"]}
其余的API可以从官方文档上查到https://docs.docker.com/registry/spec/api/。
来源:https://www.cnblogs.com/00986014w/p/9869343.html