zoukankan      html  css  js  c++  java
  • 使用docker-compose搭建私有docker registry

    前言

    docker hub注册后只可以免费上传一个镜像,不过我们也可以使用其他免费docker仓库,比如腾讯云的免费docker仓库,不受上传限制。
    当然我们也可以创建我们自己的私有仓库,再也不用担心上传速度受到影响,并且也更加安全。

    示例说明

    1. 使用的是win10自带的docker
    2. 服务器使用的是centos系统
    3. 服务器ip地址以 182.61.60.219 为例(该IP只是示例,并不可用哦)
    4. 仓库端口以8050为例
    5. 仓库访问端口以5000为例
    6. 仓库UI访问端口以5051为例
    7. 本地局域网地址以192.168.2.106为例

    示例目录

    搭建私有registry

    1.添加auth认证:

    htpasswd加密方式 htpasswd命令是Apache的Web服务器内置工具,用于创建和更新储存用户名、域和用户基本认证的密码文件。
    

    Reference

    Use

    • docker run --entrypoint htpasswd registry -Bbn admin 123456 > ./auth/passwd // 新增用户并创建加密文件(如果系统没有安装此命令,可以使用docker容器中的命令来实现)
    • 利用htpasswd命令添加用户 htpasswd -bc htpasswd.user admin 123456
    • 在bin目录下生成一个 htpasswd.user 文件,用户名admin,密码:123456,默认采用MD5加密方式。
    • 在原有密码文件中增加下一个用户 htpasswd -b htpasswd.user Jack 123456
    • 去掉-c选项,即可在第一个用户之后添加第二个用户,依此类推。
    • 利用htpasswd命令删除用户名和密码 htpasswd -D htpasswd.user Jack
    • 利用htpasswd命令修改密码 htpasswd -b htpasswd.user Jack 123456

    2.Config

    windows:

    默认使用https,使用http需要注册
    修改daemon.json文件sudo vim /etc/docker/daemon.json
    添加:{ "insecure-registries":["192.168.49.132:5000"]}
    注: win10的配置在docker的设置里可以找到daemon配置选项
    

    centos 系统

    • 在 /etc/docker/daemon.json 文件中写入:
        {
            "registry-mirror": [
              "https://registry.docker-cn.com"
            ],
            "insecure-registries": [
              "[私有仓库 ip:port]"
            ]
        }
    
    • 然后重启 docker
      ystemctl restart docker

    3.docker-compose.yaml

        version: '2.1'
            services:
              registry:
                image: registry
                container_name: my_registry
                volumes:
                  - ./registry:/var/lib/registry
                  - ./auth:/auth
                environment:
                  - REGISTRY_AUTH=htpasswd
                  - REGISTRY_AUTH_HTPASSWD_REALM=Registry_Realm
                  - REGISTRY_AUTH_HTPASSWD_PATH=/auth/passwd
                restart: always
                privileged: true
                ports:
                  - "8050:5000"
    

    4.Login to docker:

    docker login http://182.61.60.219:8050
    

    5.Upload to docker:

    docker tag hello-world 192.168.2.106:5000/hello-world  //设置标签 加上仓库地址前缀
    docker push 192.168.2.106:5000/hello-world
    

    6.View image

    GET http://192.168.2.106:5000/v2/_catalog
    GET http://192.168.2.106:5000/v2/image_name/tags/list
    

    Reference

    7. 可以配置UI来美化仓库页面

    version: '2.1'
    services:
      registry-ui:
        image: konradkleine/docker-registry-frontend:v2
        container_name: my_registry_ui
        restart: always
        privileged: true
        environment:
          - ENV_DOCKER_REGISTRY_HOST=182.61.60.219
          - ENV_DOCKER_REGISTRY_PORT=8050
        ports:
          - "8051:80"
    

    总结

    1. 有时我们系统中没有安装某个命令时,可以使用镜像中的命令来代替实现。
    2. 步骤7只是用来优化docker仓库页面的,如果不使用UI,那么只可以看到json格式的返回结果。
    原博客链接:https://www.cnblogs.com/xpengp/
  • 相关阅读:
    感动于细节,记我的一个同学(君君)
    求职时,我问过的问题
    毕业留言,写给我的一个同学
    偶是一个如此善良的人
    温柔地对待仇人,就像对待情人一样!
    小改机箱,支持硬盘调头,让磁盘对拷更方便
    心中的女朋友:(标准)
    准备开始看以下书籍
    成都文化公园游后感
    ”中国的教育与计算机“读后感
  • 原文地址:https://www.cnblogs.com/xpengp/p/12714381.html
Copyright © 2011-2022 走看看