主要参考了https://blog.tfm.ro/setup-and-run-a-standalone-private-docker-registry-v2/和http://www.javashuo.com/article/p-ofdehcsb-cc.html。html
1、安装docker-distributionnginx
yum install -y docker-distribution
安装完成后,启动服务:docker
systemctl enable docker-distribution.service systemctl start docker-distribution.service
2、配置config.yamljson
在/etc/docker-distribution/registry目录下编辑config.yaml文件以下:api
version: 0.1 log: fields: service: registry storage: cache: layerinfo: inmemory filesystem: rootdirectory: /var/lib/registry #可更改 http: addr: [仓库运行的IP地址]:[仓库运行的端口,可设为5000]
3、修改daemon.jsonbash
在/etc/docker目录下编辑daemon.json文件,在大括号里增长一行:curl
"insecure-registries": ["仓库IP:仓库端口"],
随后重启docker:测试
systemctl restart docker
这样就完成了私有仓库的搭建。url
4、测试上传3d
用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
5、测试查询
Docker registry v2的API与v1差别很是大。例如,用下面的命令查看已上传的镜像:
curl -X GET http://仓库IP:仓库端口/v2/_catalog
应该可以返回:
{"repositories":["nginx"]}
其他的API能够从官方文档上查到https://docs.docker.com/registry/spec/api/。