• docker-建立私有registry


    我们知道可以使用hub.docker.com作为我们公共或者私有的registry。但由于服务器在国外的原因,网速会非常的慢。
    所以我们在利用docker开发构建容器服务时,我们希望能够建立自己的私有registry,上传镜像值我们的私有registry中心,然后在其他物理机上部署的时候,可以快速的pull,然后实现大规模的分发以及部署,提高效率。
    下面将会说一下如何通过registry容器实现这个

    环境:centos7.0,  docker1.13.1版本

    docker1.12版本以后,docker的可执行文件从/usr/bin/docker变成了/ussr/bin/dockerd,每一个版本在不同的环境下,dockerd的daemon都是不同的配置,具体的要根据docker官网的指导进行配置。我们在网上可以看到很多关于如何配置docker的daemon启动参数教程,以及一些出现的问题,其实大部分都是讲的比较乱的,或者不根据自己的实际系统和docker版本去确定如何配置的,因为不同的系统版本和docker版本具体的opts的选项是不同的,这个配置的文件的位置也是不一样的,如果没清楚整个区别,就跟着网上的改来改去,最后配置还是没能生效。


    (1)无认证的registry
    在环境中,dockerd的配置文件在/etc/docker/daemon.json中,如果没有该文件,可以手动创建。

    第一步:pull docker官方的registry的第二个版本,docker1.6版本以上支持registry2
    docker pull registry:2.6.0

    或者docker pull registry 不指定版本,表示latest版本

    第二步:配置daemon.json,去掉docker默认的https的访问
    vim /etc/docker/daemon.json
    里面的内容是一个json对象,加上一项insecure-registries,地址自己更改:
    {
    "insecure-registries":["192.168.1.78:5000"]
    }

    然后重启docker,执行
    systemctl daemon-reload docker
    systemctl restart docker

    第三步:无认证启动registry容器
    docker run -d --name registry -p 5000:5000 --restart=always -v /opt/registry/:/var/lib/registry/ registry:2.6.0
    上传到私有镜像的镜像到时是默认存放在容器的/var/lib/registry/,为了防止删除registry,上传的镜像也被删除,所以启用一个volume,将上传的镜像持久化保存在我们物理机上,这里保存位置是/opt/registry/

    第四步:测试是否启动容器
    curl http://192.168.1.78:5000/v2/_catalog

    如果返回{"repositories":[]},代表启动成功了!

    第五步:测试上传到我们自己的私有registry
    将nginx这个镜像重命名tag
    docker tag nginx 192.168.1.78:5000/mynginx
    这里需要注意的是重命名的tag必须带有建立192.168.1.78:5000/这个前缀,后面的mynginx是新镜像名。
    然后开始进行push到我们建立的私有registry
    docker push 192.168.1.78:5000/mynginx
    再通过运行
    curl http://192.168.1.78:5000/v2/_catalog
    可以看到返回{"repositories":["mynginx"]}
    说明已经push到了自己的registry


    第六步:测试pull
    同样还是在本机上进行pull
    首先删除本机存在的镜像192.168.1.78:5000/mynginx(刚才通过tag重命名的)
    docker rmi 192.168.1.78:5000/mynginx
    然后
    docker images
    可以看到已经没有了192.168.1.78:5000/mynginx这个镜像
    下面开始pull这个镜像
    docker pull 192.168.1.78:5000/mynginx
    然后再看
    docker images
    可以看到出现这个192.168.1.78:5000/mynginx
    说明pull成功了

    第七步:在其他的物理机上pull这个镜像
    同样需要在安装docker,然后再/etc/docker/daemon.json这个文件中
    添加insecure-registries,ip地址自己更改:
    {
    "insecure-registries":["192.168.1.78:5000"]
    }
    然后重启docker,执行
    ststemctl daemon-reload docker
    systemctl restart docker
    docker pull 192.168.1.78:5000/mynginx 
    这样子就可以从自己的registry拉取镜像了,当然也可以上传镜像
    假如有一个mynginx:1.1
    docker tag 192.168.1.78:5000/mynginx 192.168.1.78:5000/mynginx:1.1
    docker push 192.168.1.78:5000/mynginx:1.1
    其实192.168.1.78:5000/这个就是建立的私有registry的地址

    无认证的registry已经完成了,特别在局域网内部开发或者线上部署时非常有用!

    下一节将会总结一下关于认证模式的registry,欢迎留意!

  • 相关阅读:
    Redis 7.0 新功能新特性总览
    adb实现钉钉自动打卡 MKY
    vue2+webpack 转 vite
    zsh: command not found:nvm 的解决方案
    SSH keys 生成
    sass(dart sass)和nodesass 的区别以及 /deep/、::vdeep的支持
    nvm(node的版本管理)简介以及nvm管理node的命令介绍
    处理 code.matchAll(...) is not a function 问题
    package.json 里面的~、^
    处理 vite 里面 __require() 方法报错
  • 原文地址:https://www.cnblogs.com/wangmo/p/8509446.html
Copyright © 2020-2023  润新知