美文网首页
Docker搭建registry 私人仓库

Docker搭建registry 私人仓库

作者: PengFuChuan | 来源:发表于2017-06-28 21:37 被阅读0次
    一、Docker搭建registry 私人仓库简易版
    docker run --restart=always --name=registry2.3 -v /home/registry/data:/var/lib/registry -d -p 5000:5000  registry:2.3
    

    说明: -v /home/registry/data:/var/lib/registry 是把镜像存储目录挂载到宿主机,才不会删容器导致数据丢失

    这样就可以运行使用registry:2.3,但是这是对所有人开放,并不安全,更好的方案是结合第三方存储服务,如阿里云OSS,并且需要给registry加上登录验证,以及一些权限的限制。

    二、Docker搭建registry 私人仓库进化版

    使用docker-compose 来进行部署,废话不多说直接来操作。
    首先切换到/home 目录(我一般是使用centos 7 , home目录为基础使用目录,具体看个人)

    • 未结合OSS版
      在/home目录创建一个registry目录并进入该目录:
    mkdir registry && cd registry
    

    在当前目录创建docker-compose.yml:

    registry:
      restart: always
      image: "registry:2.3"
      ports:
        - 5000:5000
      environment:
        - REGISTRY_AUTH=htpasswd
        - REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm
        - REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd
      volumes:
        - ./auth:/auth
        - ./data:/var/lib/registry
    

    在启动 Registry 服务时,需要用到以下两个目录
    (1)auth 目录用于存放 docker login 时的账号和密码
    (2)data 目录用于存放 docker push 时上传上来的文件
    执行以下命令新建这两个目录:

     mkdir auth && mkdir data
    

    然后,创建一个测试账号(用户名: admin ,密码: 123456 )并保存到 auth/htpasswd 中:

    htpasswd -Bbn test 123456 > auth/htpasswd
    

    最后就可以来启动 Registry 服务:

    docker-compose up -d
    

    docker ps 可以看到已经run起来的容器:

    [root@myali1 ~]# docker ps
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
    26895a32e59a        registry:2.3        "/bin/registry /etc/d"   8 hours ago         Up 8 hours          0.0.0.0:5000->5000/tcp   registry_registry_1
    

    简单示例 push 镜像到私人仓库
    执行以下命令创建一个新镜像:

    docker tag docker.io/busybox  127.0.0.1:5000/test/busybox
    

    说明:镜像名为 127.0.0.1:5000/test/busybox ,其中 127.0.0.1:5000 表示服务器地址, test/busybox 表示镜像名。
    上传之前要先登录:

    docker login 127.0.0.1:5000
    

    根据提示输入账号密码或者一步到位:

    docker login -u admin -p 123456 127.0.0.1:5000
    

    登陆成功后,执行以下命令即可上传

    docker push 127.0.0.1:5000/test/busybox
    

    最后通过浏览器访问 : http://ip:5000/v2/_catalog 会提示输入账号密码,输入账号密码之后你就可以看到刚刚push上来的镜像。

    {
         "repositories": [
            "test/busybox"
          ]
    }
    
    • 结合阿里云 OSS
      将文件 docker-compose.yml 改为以下内容:
    registry:
      restart: always
      image: "registry:2.3"
      ports:
        - 5000:5000
      environment:
        - REGISTRY_AUTH=htpasswd
        - REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm
        - REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd
        - REGISTRY_STORAGE=oss
        - REGISTRY_STORAGE_OSS_ACCESSKEYID=你的ACCESSKEYID
        - REGISTRY_STORAGE_OSS_ACCESSKEYSECRET=你的ACCESSKEYSECRET
        - REGISTRY_STORAGE_OSS_REGION=你的OSS所属地域
        - REGISTRY_STORAGE_OSS_BUCKET=你的BUCKET名称
        - REGISTRY_STORAGE_OSS_INTERNAL=false #是否走内网
        - REGISTRY_STORAGE_OSS_SECURE=false
        - REGISTRY_STORAGE_DELETE_ENABLED=true
      volumes:
        - ./auth:/auth
    

    说明:由于使用阿里云 OSS 作为存储引擎,所以不需要再将文件存储到本地,因此将 volumes 中的 data 目录配置去掉; environment 新增了一些配置参数,需根据具体情况进行修改
    删除 data 目录和就镜像并重新启动服务:

     docker rm -fv registry_registry_1 && rm -Rf data && docker-compose up
    

    重新push 镜像然后去OSS控制台查看镜像是否正常存储到OSS服务

    相关文章

      网友评论

          本文标题:Docker搭建registry 私人仓库

          本文链接:https://www.haomeiwen.com/subject/pryzqxtx.html