仓库(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镜像拉取私有库时代吧!