在安装Docker后,可以通过官方提供的registry镜像来简单搭建一套本地私
有仓库环境,默认情况下,会将仓库创建在容器的/ tmp/registry目录下。但我们可以通过- v参数来将镜像文件存放在本地的指定路径。这里我将上传的镜像放到/ opt/data/registry目录:
docker run -d -p 5000:5000 -v /opt/data/registry:/tmp/registry registry
此时,在本地将启动一个私有仓库服务,监听端口为5000。
同样我发现阿里云依旧没有打开5000端口,按照我上篇博客打开5000端口。
我阿里云地址为39.96.195.154。一样的,按上篇博客,我将我的一个镜像标记为39.96.195.154:5000/test
docker tag yuanyingxue/xiaoyi-nginx 39.96.195.154:5000/test
这时我开始上传
docker push 39.96.195.154:5000/test
但是报错
意思是容器用https去访问仓库,但我的仓库是http。
解决办法:在/etc/docker/查找有无daemon.json这个文件修改或者新建这个文件,添加下面这条语句
{ "insecure-registries":["192.168.10.26:5000"] }
然后重启容器
sudo service docker restart
重新上传这个镜像,成功!
这时候又出现一个问题,上传后无法拉取回来,原因是较高版本的Docker版本对安全性要求较高,会要求仓库支持SSL/TLS证书。
解决办法又2个:
- 对于内部使用的私有仓库,可以自行配置证书。
- 对于内部使用的私有仓库,可以关闭对仓库的安全性检查。
这里我使用第二种办法在daemon.json文件上添加这条语句。
{DOCKER_OPTS="--insecure-registry 192.168.10.26:5000" }
重启容器,从我的私有仓库里下载容器,简单pull一下
docker pull 39.96.195.154:5000/test
成功下载!!!