本文为原创文章,欢迎转载,转载时需附上本文的原文链接
网上介绍如何搭建生产用registry的内容比较多,但对于自己的本机开发测试用环境来说,大多太复杂。
仔细看了官网这一部份的文档后,发现只本机环境的搭建其实很简单,每次都要去看官网英文不方便,这里结合官网的示例命令,作一个记录方便以后自己查看备忘,有需要的朋友也可以参考。官网registry搭建文档地址。
搭建镜像私服服务器
从docker hub中央镜像仓库拉取registry2镜像到本地:
$ docker pull registry:2
运行registry:2容器:
docker run -d
-p 5000:5000
#-e REGISTRY_HTTP_ADDR=0.0.0.0:5001
--restart=always
--name registry
-v /mnt/registry:/var/lib/registry
registry:2
*上述参数作用如下:
-d:以守护进程方式运行。
-p 5000:5000:将主机的5000端口映射到容器的5000端口,第1个5000指主机端口号,第2个5000是registry容器的真实监听端口。其中主机端口号可直接在参数中修改,但第2个容器端口号只能通过给容器添加环境变量的方式修改。例如上面的 + -e REGISTRY_HTTP_ADDR=0.0.0.0:5001
–restart=always:当容器重启/退出的时候,自动重启,便于一直可用。官方文档的原话是to restart automatically when Docker restarts or if it exits
–name registry:为容器指定一个名字,便于后续的docker contrainer相关的命令引用,否则会自动生成一个乱叉容器id,每次都要docker ps命令去查。
-v /mnt/registry:/var/lib/registry:将主机的/mnt/registry目录mount到容器的/var/lib/registry目录,容器的/var/lib/registry目录是具体存放docker image的位置。这个参数的作用在于将所有image统一放在外部主机的一个固定目录中,便于管理。
从Docker Hub拷贝一个镜像到自己的私服中(目的是测试一下,上面的服务器OK不)
例如从Docker Hub拉取ubuntu:16.04镜像
$ docker pull ubuntu:16.04
重新打标记
$ docker tag ubuntu:16.04 localhost:5000/my-ubuntu
注意标记斜杠前面的部分localhost:5000,当push的时候docker会自动认为是刚刚本机registry容器的地址。官网原话为 When the first part of the tag is a hostname and port, Docker interprets this as the location of a registry, when pushing.
将重新打标后的镜像上传到私服中:
$ docker push localhost:5000/my-ubuntu
移除主机docker中已经存在的镜像
$ docker image remove ubuntu:16.04
$ docker image remove localhost:5000/my-ubuntu
此步的目的是为下一步验证能否直接从私服中重拉取清理环境。
重新从私服中拉取
$ docker pull localhost:5000/my-ubuntu
注:如有更多疑问,欢迎加私友一起探讨学习,我的联系方式可在脑链网上找到