• docker搭建私有仓库


    参考资料

    CentOS环境下Docker私有仓库搭建

    Docker系列三:DockerHub私有仓库的搭建

    教你分分钟搞定Docker私有仓库Registry

    [Docker] Docker 私有仓库搭建教程(带用户验证)

    手把手教你搭建Docker Registry私服

    有了docker hub,为什么还要搭建docker私有仓库?

    1、性能考虑:docker hub的访问要通过互联网,性能太低。

    2、安全性:更多的时候,镜像不想被外部的人获取,虽然可以在docker hub上申请私有repository,但是需要付费。

      • 安装docker

      如下操作是在root用户下

      yum -y install docker-io

      启动docker

      service docker start   # 启动docker
      service docker stop    # 停止docker
      service docker restart # 重启docker
      • 搭建docker私有仓库

      搭建docker私有仓库也是通过docker,真是就地取材。

      1、首先下载registry镜像

      docker pull registry:2

      说明:

      这里下载的是最新版本2。

      2、启动registry镜像的容器

      docker run -d -p 5000:5000 -v /myregistry:/var/lib/registry registry:2

      说明:

      -d ==> 作为daemon进程启动,也就是后台启动

      -v /myregistry:/tmp/registry ==> 默认情况下,会将仓库存放于容器内的/tmp/registry目录下,指定本地目录/myregistry挂载到容器,可以防止容器意外停止后镜像的丢失。

      -p 5000:5000 ==> 前一个5000是host的端口,后一个是容器的端口。这里是将容器的5000端口映射到host的5000端口。

      3、配置https权限支持

    • 第一种(已测试)

      1. vim /etc/docker/daemon.json
      2.  
        添加
      3.  
        { "insecure-registries":["192.168.1.40:5000"] }
        重启docker服务

      第二种(未测试)修改/etc/sysconfig/docker,我的文件内容如下

      复制代码
      # /etc/sysconfig/docker
      #
      # Other arguments to pass to the docker daemon process
      # These will be parsed by the sysv initscript and appended
      # to the arguments list passed to docker -d
      
      other_args="--exec-driver=lxc --selinux-enabled --insecure-registry 100.90.61.14:5000"
      DOCKER_CERT_PATH=/etc/docker
      
      # Resolves: rhbz#1176302 (docker issue #407)
      DOCKER_NOWARN_KERNEL_VERSION=1
      
      # Location used for temporary files, such as those created by
      # # docker load and build operations. Default is /var/lib/docker/tmp
      # # Can be overriden by setting the following environment variable.
      # # DOCKER_TMPDIR=/var/tmp
      #
      curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://2a5b5ce4.m.daocloud.io
      复制代码

      说明:

      --insecure-registry 100.90.61.14:5000,表示开启5000端口的非安全模式,也就是http模式。

      重启docker服务

      service docker restart
      • 上传镜像到私有registry

      先下载一个httpd镜像作为示例

      docker pull httpd

      修改一下该镜像的tag

      # docker tag httpd 100.90.61.14:5000/kangaroo/httpd:v1

      说明:

      1)我们在镜像前面加上了运行私有registry的ip:port,这是必须的,只有访问docker hub的时候可以忽略ip:port。

      2)kangaroo是我的网名,这里加上予以区分用户。

      上传

      上传镜像到私有registry

      # docker push 100.90.61.14:5000/kangaroo/httpd:v1

      在私有registry上查看镜像

      # curl -XGET http://100.90.61.14:5000/v2/_catalog

      {"repositories":["kangaroo/httpd"]}

      下载

      从私有registry上下载镜像

      删除本地镜像

      docker rmi 100.90.61.14:5000/kangaroo/httpd:v1

      从私有registry上下载

      docker pull 100.90.61.14:5000/kangaroo/httpd:v1

      查看本地镜像,可以看到已经拉下来了。

    总结,想要使用私用仓库,必须修改http权限

    上面搭建的是不需要用户登陆验证的,一般情况在正式项目中都需要用户登陆验证,下面就来创建用户密码

    第一步 生成 用户名/密码 访问密钥 (这里设置用户名 abc , 密码 abc123)

    2、 设置配置文件,启用删除镜像功能(也可以不启用,看业务需要,修改 storage - delete - enable 为 false 即可)

    # mkdir -p /opt/registry-var/config
    # vim /opt/registry-var/config/config.yml
    
    
    
    version: 0.1
    log:
      fields:
        service: registry
    storage:
      delete:
        enabled: true
      cache:
        blobdescriptor: inmemory
      filesystem:
        rootdirectory: /var/lib/registry
    http:
      addr: :5000
      headers:
        X-Content-Type-Options: [nosniff]
    health:
      storagedriver:
        enabled: true
        interval: 10s
    threshold: 3

    3、启动服务(这里将镜像路径映射到宿主机的 /opt/registry-var/ 文件夹下,可以根据需要修改)

    docker run -d -p 5000:5000 --restart=always  --name=registry -v /myregistry/config/:/etc/docker/registry/ -v /myregistry/auth/:/auth/ -v /myregistry/:/var/lib/registry/ -e "REGISTRY_AUTH=htpasswd" -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd  registry:2

    # docker run -d -p 5000:5000 --restart=always  --name=registry
      -v /opt/registry-var/config/:/etc/docker/registry/ 
      -v /opt/registry-var/auth/:/auth/ 
      -e "REGISTRY_AUTH=htpasswd" 
      -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" 
      -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd 
      -v /opt/registry-var/:/var/lib/registry/ 
    registry:2.5

    4、登陆  docker login  192.168.81.224:5000

    5、查看上传的镜像

    注意,报下面的错误,可以用浏览器打开 或者 

    curl -u username:password http://

     

    6、查看镜像详细信息

    docker run -d -p 5000:5000 --restart=always  --name=registry -v /myregistry/config/:/etc/docker/registry/ -v /myregistry/auth/:/auth/ -v /myregistry/:/var/lib/registry/ -e "REGISTRY_AUTH=htpasswd" -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd  registry:2

    删除私用仓库镜像:

    https://blog.51cto.com/302876016/1966816

    1、配置config.yml

    2、查看img:v1.2的digest值

    3删除

    4查看是否删除

  • 相关阅读:
    .NET ------- 根据关键字查询后,点击详细页面对关键字标红
    .NET ------ 禁止文本输入的三种方式
    .NET ---- 借助repeater在行中进行下拉框编辑 (前端赋值给下拉框)
    Android ------ Android Studio 生成 apk 文件
    CentOS 8 Stream 简单的网络配置
    最受欢迎的 10 本编程书籍(文末附地址)
    优秀程序员必须掌握的 8 种通用数据结构
    一次阿里 P7 的面经,分享给大家
    如何在 Windows 上运行 Linux? 这里有一份攻略!
    为啥程序员下班后从不关电脑?
  • 原文地址:https://www.cnblogs.com/lfxiao/p/9829190.html
Copyright © 2020-2023  润新知