Docker安装私有仓库,用户认证(Registry)
Posted wxwgk
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Docker安装私有仓库,用户认证(Registry)相关的知识,希望对你有一定的参考价值。
一、关于Registry
官方的Docker hub是一个用于管理公共镜像的好地方,我们可以在上面找到我们想要的镜像,也可以把我们自己的镜像推送上去。但是,有时 候,我们的使用场景需要我们拥有一个私有的镜像仓库用于管理我们自己的镜像。这个可以通过开源软件Registry来达成目的。
Registry在github上有两份代码:老代码库和新代码库。老代码是采用python编写的,存在pull和push的性能问题,出到0.9.1版本之后就标志为deprecated,不再继续开发。从2.0版本开始就到在新代码库进行开发,新代码库是采用go语言编写,修改了镜像id的生成算法、registry上镜像的保存结构,大大优化了pull和push镜像的效率。
官方在Docker hub上提供了registry的镜像(详情),我们可以直接使用该registry镜像来构建一个容器,搭建我们自己的私有仓库服务。
二、安装Docker私有仓库
1、下载Docker Registry镜像
# docker pull registry //下载到的版本默认为 docker.io/registry latest
2、将registry镜像运行并生成一个容器
说明:Registry服务默认会将上传的镜像保存在容器的/var/lib/registry,将主机的/opt/application/registry/images目录挂载到该目录,即可实现将镜像保存到主机的/opt/application/registry/images目录了。
# docker run -d --name registry01 -v /opt/application/registry/images:/var/lib/registry -p 5000:5000 --restart=always registry:latest
3、测试上传镜像到Registry
1)首先将主机的registry镜像命名为符合仓库要求registry_url:port/ImageName:tag的格式,可以使用docker tag来标记:
# docker tag xoa_all_production:v1 192.168.0.8:5000/xoa_all_production:v1
2)开始上传
# docker push 192.168.0.8:5000/xoa_all_production:v1
上面的报错是因为registry未采用https服务,而客户端docker使用https请求push所致。
解决方法:docker客户端将https请求更改为http请求, 将以下配置添加到 /etc/docker/daemon.json 中:
{
"registry-mirrors": ["https://k728i8z5.mirror.aliyuncs.com"],
"insecure-registries":["192.168.0.8:5000"]
}
注意: 该配置是配置在docker客户端,让docker客户端以不安全的http请求访问docker registry,ip以及端口填写的是提供服务容器的ip以及端口。
修改配置需要重启Docker服务才能生效,执行命令:systemctl restart docker ,再push即可。
push成功之后,查看本地/opt/application/registry/images目录下已经有了刚推送上来的registry镜像,也可以在浏览器中输入http://ip_add:5000/v2/_catalog
至此,我们的Registry私有仓库搭建完成,如果在今后中要使用,可以使用命令:docker pull 拉取镜像
以上是关于Docker安装私有仓库,用户认证(Registry)的主要内容,如果未能解决你的问题,请参考以下文章