仓库(repository)是镜像存放的地方,目前官方维护了一个公共仓库 https://hub.docker.com; 具体的操作自行百度, 这里我们讨论如何搭建私有仓库

1.拉取仓库

$ docker run -d -p 5000:5000 registry

2.设置仓库私有地址

将如下命令粘到cmd中执行  192.168.31.203:5000 是你私有仓库的地址
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "insecure-registries": ["192.168.31.203:5000"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

3.将镜像创建私库标签

$ docker tag imageregistry 192.168.31.203:5000/testregistry

4.上传镜像到私有仓库

$ docker push 192.168.31.203:5000/testregistry

5.查看镜像是否已经上传到私有仓库

$ curl -X GET http://192.168.31.203:5000/v2/_catalog

6.进入容器内部查看镜像文件

$docker exec -it  registryId sh 
$cd /var/lib/registry/docker/registry/v2/repositories/

注意: registry v1 与 V2 不同, 这里是用的是V2版本
    V1版本是在 /tmp/registry 下
    V2版本是在 /var/lib/registry/ 下

7.将仓库映射到主宿机上(这是一个新的仓库, 上面的仓库要停掉,不然端口冲突)

7.1 重新创建私有仓库
$ docker run -d -p 5000:5000 --restart=always \
    -v /opt/:/var/lib/registry/ \
    registry
  
  容器/var/lib/registry/下的镜像生成时会自动添加 docker/registry/v2 的路径,所以这里就直接映射到宿主机的/opt下, 上传后会自动生成 /opt/docker/registry/v2路径
  
  查看仓库内容, 发现是空, 在宿主机上的/opt/docker/registry/也为空
7.2重新上传镜像到仓库
$ docker push 192.168.31.203:5000/testregistry
7.3删除本地的镜像,重新拉取(毫秒级完成)
$ docker rmi 192.168.31.203:5000/testregistry
   $ docker pull 192.168.31.203:5000/testregistry

恭喜你已经完成了私有库v2版本的搭建; 开始你的docker镜像拉取私有库时代吧!