我们可能希望构建和存储包含不想公开的信息或数据的镜像,因为Docker公司的团队开源了docker-registry的代码,这样我们就可以基于此代码在内部运行自己的registry。
服务端
1.拉去仓库镜像
[root@slave5 ~]# docker pull registry:2.1.1
2.查看容器
[root@slave5 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
38802006b373 docker.io/registry:2.1.1 "/bin/registry /etc/ 24 hours ago Up 5 minutes 0.0.0.0:5000->5000/tcp registry
3.启动容器
[root@slave5 ~]# docker run -d -v /opt/registry:/var/lib/registry -p 5000:5000 --restart=always --name registry registry:2.1.1
重要:默认情况下,会将仓库存放于容器的/var/lib/registry目录下,这样如果容器被删除,则存放于容器中的镜像也会丢失,所以我们一般情况下会指定本地一个目录挂载到容器的/opt/registry下, 两个目录下都有!
·registry的默认存储路径是/tmp/registry,只是个临时目录,一段时间之后就会消失
·所以使用-v参数,指定个本地持久的路径。
4.访问http://ip:5000端口,出现如下界面,则代表仓库安装成功
客户端
1.拉取镜像
[root@slave5 ~]# docker pull busybox
2.为镜像打标签
[root@slave5 ~]# docker tag docker.io/busybox 192.168.0.38:5000/busybox
[root@slave5 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
docker.io/busybox latest 0064fda8c45d 5 days ago 1.113 MB
<none> <none> 42316db2cd8d 12 days ago 187.9 MB
docker.io/registry latest a8706c2bfd21 2 weeks ago 422.8 MB
docker.io/ubuntu 14.04 d55e68e6cc9c 2 weeks ago 187.9 MB
3.编辑docker配置文件,指定私有仓库url
[root@slave5 ~]# vim /etc/sysconfig/docker
OPTIONS='--insecure-registry 192.168.0.38:5000 '
[root@slave ~]# service docker restart
4.上传镜像到仓库
docker push 192.168.0.38:5000/busybox
5.查看私有仓库
[root@slave ~]# curl 192.168.0.38:5000/v1/search
{"num_results": 1, "query": "", "results": [{"description": "", "name": "library/busybox"}]}