美文网首页
搭建docker私有镜像仓库

搭建docker私有镜像仓库

作者: 奋斗_登 | 来源:发表于2021-08-16 18:14 被阅读0次

    为了更方便的部署应用到Docker容器中,可以将打包应用镜像直接通过docker push 命令推送到服务器所在地镜像仓库中,所以需要搭建私有镜像仓库。 本文使用Docker公司开发的私有镜像裤Registry。

    • 下载Register的Docker镜像
     docker pull registry
    
    • 设置私有仓库用户认证
    #用户账户信息存储目录
    mkdir  /home/data/auth
    

    如果registry版本在2.7以下可以用以下命令创建

    docker run --entrypoint htpasswd registry -Bbn admin 123456 > /home/data/auth/htpasswd
    

    但在2.7.0以上用以上命令会报错

    docker: Error response from daemon: OCI runtime create failed: container_linux.go:367: starting container process caused: exec: "htpasswd": executable file not found in $PATH: unknown.
    

    解决参考如下:
    https://github.com/docker/distribution-library-image/issues/106
    https://www.coder.work/article/7351056
    解决方法(用户httpd-tools创建账号信息):

    yum install -y httpd-tools
    htpasswd -Bbn admin 123456 > /home/data/auth/htpasswd
    
    httpd-tools
    • 创建registry的卷 (容器数据持久化)
    docker volume create registry_data
    
    • 启动registry
    docker run --name registry2 -p 5000:5000 --restart=always \
    -v registry_data:/var/lib/registry \
    -v /home/data/auth:/auth \
    -e "REGISTRY_AUTH=htpasswd" \
    -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
    -e  REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \
    -e  REGISTRY_STORAGE_DELETE_ENABLED="true" \
    -d registry
    

    REGISTRY_STORAGE_DELETE_ENABLED="true"标识可删除镜像

    • 修改客户端Docker Daemon的配置文件,文件位置为/etc/docker/daemon.json,由于Docker默认使用HTTPS推送镜像,而我们的镜像仓库没有支持,所以需要添加如下配置,改为使用HTTP推送;
    {
      "registry-mirrors": ["https://fon46f0i.mirror.aliyuncs.com"],
      "insecure-registries": [
        "12.7.182.10:5000"
      ]
    }
    

    重启配置生效

    systemctl daemon-reload && systemctl restart docker
    
    • 安装registry ui
    docker pull joxit/docker-registry-ui:1.5-static
    
    • 使用Docker容器运行docker-registry-ui服务
    docker run -p 8281:80 --name registry-ui1.5 \
    --link registry2:registry2 \
    -e REGISTRY_URL="http://registry2:5000" \
    -e DELETE_IMAGES="true" \
    -e REGISTRY_TITLE="Registry2" \
    -d joxit/docker-registry-ui:1.5-static
    

    在另外一台docker服务器docker push 向此私有仓库镜像

    docker pull busybox
    docker tag busybox 12.78.182.15:5000/busybox:latest
    docker login --username=admin 12.78.182.15:5000
    #输入密码并推送
    docker push 12.78.182.15:5000/busybox:latest
    
    docker push
    docker push
    浏览http://registry2:8281
    docker-registry-ui:1.5-static

    相关文章

      网友评论

          本文标题:搭建docker私有镜像仓库

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