搭建私有仓库

docker run -d -p 5000:5000 registry:2 -v /opt/data/registry:/var/lib/registry registry:2

用以上命令运行仓库,因为未采用https安全性不支持,需要修改配置,不然稍后针对于仓库的操作会报错

配置有证书的私有仓库(接下来的实验以配置证书的方法为主)

1.生成证书

mkidr certs
openssl req -newkey rsa:4096 -nodes -sha256 -keyout certs/wakamizu.com.key -x509 -days 365 -out certs/wakamizu.com.crt

2.启动仓库容器

docker run -d -p 443:5000 \
--restart=always \
--name registry \
-v `pwd`/certs:/certs \
-v /opt/data/registry:/var/lib/registry \

-e REGISTRY_STORAGE_DELETE_ENABLED=true \
-e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/wakamizu.com.crt \
-e REGISTRY_HTTP_TLS_KEY=/certs/wakamizu.com.key \
registry:2

3.客户机添加自签名证书信任(由正规代理商颁发的证书不需要此步骤)

mkdir -p /etc/docker/certs.d/wakamizu.com
cp ~/certs/wakamizu.com.crt /etc/docker/certs.d/wakamizu.com/
systemctl restart docker

echo "192.168.1.2 wakamizu.com" >> /etc/hosts

4.拉取镜像

docker pull ubuntu:18.04

5.修改镜像标签

docker tag ubuntu:18.04 仓库地址/镜像名

6.上传镜像

docker push 仓库地址/镜像名

7.查看私有仓库镜像(由正规代理商颁发的证书不需要加-k参数)

curl -k https://仓库地址/v2/_catalog

8.现在在人任何一个可以访问到仓库服务器的设备都可以下载test:latest镜像了

删除私有仓库镜像

1.获取镜像标签

curl https://仓库地址/v2/镜像名称/tags/list

2.获取Digest

curl -I -XGET https://仓库地址/v2/镜像名/manifests/镜像标签 --header "Accept: application/vnd.docker.distribution.manifest.v2+json"

3.删除镜像

curl -I -XDELETE https://仓库地址/v2/镜像名/manifests/镜像Digest

4.垃圾回收(因为docker删除p_w_picpath只是删除起元数据,信息层未删除,导致磁盘地址未释放,所以需要进行进一步的垃圾回收,可进入容器/var/lib/registry目录下查看执行以下命令后的目录大小)

docker exec -it 仓库容器ID /bin/sh
registry garbage-collect /etc/docker/registry/config.yml