Docker——Registry搭建私有镜像仓库

Posted caoweixiong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Docker——Registry搭建私有镜像仓库相关的知识,希望对你有一定的参考价值。

 

前言

在 Docker 中,当我们执行 docker pull xxx 的时候,它实际上是从 registry.hub.docker.com 这个地址去查找,这就是Docker公司为我们提供的公共仓库,上面的镜像,大家都可以看到,也可以使用。

所以,我们也可以带上仓库地址去拉取镜像,如:docker pull jenkins

在公司中使用 Docker,我们不可能把商业项目上传到公共仓库中,所以要搭建私有仓库。

 

 

1.部署仓库

准备1台安装好docker的服务器 (主机名为registry):docker私有仓库服务器,运行registry容器。

  • 下载镜像registry
docker pull registry:2.6.0

注:这里指定了2.6.0版本的,因为最新版本的会有问题,文章后面会提到

技术图片

  • 查看镜像registry
docker images

技术图片

  •  运行registry容器
docker run -d -v /opt/registry:/var/lib/registry -p 5000:5000 --restart=always --name registry registry:2.6.0

技术图片

 参数说明
  -d:在后台运行;
  -v:把宿主机的/opt/registry目录绑定 到 容器/var/lib/registry目录(这个目录是registry容器中存放镜像文件的目录),来实现数据的持久化;
  -p:映射端口;访问宿主机的5000端口就访问到registry容器的服务了;
  --restart=always:这是重启的策略,假如这个容器异常退出会自动重启容器;
  --name registry:创建容器命名为registry,你可以随便命名;
  registry:2.6.0:这个是刚才pull下来的镜像;

 

  • 查看镜像仓库中的镜像
curl http://127.0.0.1:5000/v2/_catalog

技术图片

 注:现在是空的,因为才刚运行,里面没有任何镜像内容。

 

 

2.测试仓库

准备1台安装好docker的服务器,在这台服务器上下载一个测试镜像busybox,然后上传到registry服务器进行测试。

  • 下载镜像whalesay
docker pull docker/whalesay

技术图片

  • 查看镜像whalesay
docker images

技术图片

  • 为镜像打标签
docker tag docker/whalesay 10.0.29.22:5000/cwx/whalesay:v1

技术图片

 参数说明

  docker/whalesay 这是源镜像,也是刚才pull下来的镜像文件;

  10.0.29.22:5000/cwx/whalesay:v1:这是目标镜像,也是registry私有镜像服务器的IP地址和端口;

 

  • 上传到镜像服务器
docker push 10.0.29.22:5000/cwx/whalesay:v1

注意了,如果这里报以下错:

技术图片

解决方法:需要https的方法才能上传,我们可以修改docker配置文件vi /etc/docker/daemon.json 添加 insecure-registries配置信息来解决:

[root@node ~]# vim /etc/docker/daemon.json 
{
  "registry-mirrors": [ "https://registry.docker-cn.com"],
//关键配置项,将仓库将入到不安全的仓库列表中
"insecure-registries": [ "10.0.29.22:5000"] }

然后重启docker服务:

service docker restart

重新上传镜像,如果还是报一样的错误,则在/etc/sysconfig/docker文件添加以下选项(CentOS):

技术图片

再次重启docker服务,重新上传镜像,【registry版本2.7.0或更高】会报以下的错误:

技术图片

查看registry服务器容器的日志:

docker logs -f -t --since="2020-01-15" --tail=500 registry        #(其中 -f 为查看实时日志, -t为时间 --since为从何时起)

技术图片

解决方法:版本问题,把registry版本降到2.6.0或以下。

 

镜像上传成功结果如下:

技术图片

  • 测试下载镜像

先删除本地的镜像:

docker rmi 10.0.29.22:5000/cwx/whalesay:v1

技术图片

再从搭建好的仓库中下载镜像:

docker pull 10.0.29.22:5000/cwx/whalesay:v1

技术图片

  •  列出所有镜像
curl  http://10.0.29.22:5000/v2/_catalog

技术图片

  • 列出cwx/whalesay镜像有哪些tag
curl  http://10.0.29.22:5000/v2/cwx/whalesay/tags/list

技术图片

 

 

3.删除仓库镜像

  .......待补充........

以上是关于Docker——Registry搭建私有镜像仓库的主要内容,如果未能解决你的问题,请参考以下文章

Docker——Registry搭建私有镜像仓库

使用Harbor搭建企业级私有docker仓库

docker:用registry快速搭建私有镜像仓库

用registry快速搭建私有镜像仓库

Docker搭建私有仓库之registry

搭建docker私有镜像仓库