1. 关于docker Registry
Registry在github上有两份代码:老代码库和新代码库。老代码是采用python编写的,存在pull和push的性能问题,出到0.9.1版本之后就标志为deprecated,不再继续开发。从2.0版本开始就到在新代码库进行开发,新代码库是采用go语言编写,修改了镜像id的生成算法、registry上镜像的保存结构,大大优化了pull和push镜像的效率。
2. registry部署
运行一下命令获取Registry,目前最新版本为2.3.1
docker pull registry:2.3.1
启动一个容器
docker run -d -v /opt/registry:/var/lib/registry -p 5000:5000 --restart=always --name registry registry:2.3.1
Registry服务默认会将上传的镜像保存在容器的/var/lib/registry,我们将主机的/opt/registry目录挂载到该目录,即可实现将镜像保存到主机的/opt/registry目录了。
运行docker ps看一下容器情况
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 2355477e3c21 registry:2.3.1 "/bin/registry /etc/d" 3 hours ago Up 3 hours 0.0.0.0:5000->5000/tcp registry
说明我们已经启动了registry服务,打开浏览器输入http://127.0.0.1:5000/v2,出现下面情况说明registry运行正常
3. 验证
将registry的镜像push到local镜像库中,我们要通过docker tag将该镜像标志为要推送到私有仓库
docker tag registry:2.3.1 127.0.0.1:5000/registry:2.3.1
然后查看以下本地的镜像,使用指令
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE 127.0.0.1:5000/registry 2.3.1 60e8332136e4 3 months ago 224.5 MB registry 2.3.1 60e8332136e4 3 months ago 224.5 MB
将镜像push到本地镜像库
docker push 127.0.0.1:5000/registry:2.3.1