Docker搭建本地镜像仓库
下载registry镜像
1 | docker pull registry |
运行registry容器
因为是用的容器来做本地镜像仓库的,默认情况下存储的内容是在容器内部的,当容器被删除时,则存放在容器中的镜像也会丢失。
所以一般情况下载运行registry容器时,可以使用一个本机目录挂载到容器的/var/lib/registry目录,这样当registry容器删除时,
上传到本地镜像仓库的镜像文件就不会随着容器的删除而丢失了。
这里我使用的是本机目录/opt/data/bmob-dockerhub
1 | docker run -d -p 5000:5000 -v /opt/data/bmob-dockerhub:/var/lib/registry --name bmob-dockerhub registry |
测试上传镜像到本地仓库中
1.首先用一个小镜像来做测试,这里是下载的busybox镜像
1 | docker pull busybox |
2.然后打个tag
1 | docker tag busybox 192.168.1.13:5000/busybox |
这里是用192.168.1.13这台机做本地仓库的
3.push到仓库
1 | docker push 192.168.1.13:5000/busybox |
可能遇到的错误:
The push refers to a repository [192.168.1.13:5000/busybox]
Get https://192.168.1.13:5000/v2/: http: server gave HTTP response to HTTPS client
解决方法:
在/etc/docker/daemon.json文件中添加下面一条数据
{ “insecure-registries”: [“192.168.1.13:5000”] }
然后重启
1 | systemctl daemon-reload |
将registry容器运行起来,再push就可以成功了
测试从本地仓库中拉取镜像
1.先将本机中的busybox镜像和192.168.1.13:5000/busybox镜像删除
2.拉取镜像
1 | docker pull 192.168.1.13:5000/busybox |