• <二>企业级开源仓库nexus3实战应用–使用nexus3配置docker私有仓库


    1,安装nexus3。

    这个地方略了,安装部署可以参考:nexus3安装配置。

    2,配置走起。

    1,创建blob存储。

    登陆之后,先创建一个用于存储镜像的空间。

    定义一个name,下边的内容会自动补全。

    然后保存。

    这里因为我用的测试服务器演示,因此存储没有那么大,实际生产中使用,建议服务器存储500G或以上。

    2,创建一个hosted类型的docker仓库。

    Hosted类型仓库用作我们的私有仓库,替代harbor的功能。

    点击步骤如下:

    而后可见:

    所支持种类之丰富,可见一斑。

    这里我们看到docker类型有三种:

    • hosted : 本地存储,即同 docker 官方仓库一样提供本地私服功能。
    • proxy : 提供代理其他仓库的类型,如 docker 中央仓库。
    • group : 组类型,实质作用是组合多个仓库为一个地址。

    我们先来创建一个hosted类型的私有仓库。

    点击 Repository下面的 Repositories – Create repository – docker(hosted) :

    • Name: 定义一个名称docker-local
    • Online: 勾选。这个开关可以设置这个Docker repo是在线还是离线。
    • Repository Connectors
        下面包含HTTP和HTTPS两种类型的port。
        有什么用呢?说明讲得很清楚:

    连接器允许docker客户端直接连接到docker仓库,并实现一些请求操作,如docker pull, docker push, API查询等。但这个连接器并不是一定需要配置的,尤其是我们后面会用group类型的docker仓库来聚合它。

    我们把HTTP这里勾选上,然后设置端口为8083。

    • Force basic authentication
    • 勾选。这样的话就不允许匿名访问了,执行docker pull或 docker push之前,都要先登录:docker login
    • Docker Registry API Support
      Docker registry默认使用的是API v2, 但是为了兼容性,我们可以勾选启用API v1。
    • Storage
    • Blob store:我们下拉选择前面创建好的专用blob:idocker-hub。
    • Hosted
      开发环境,我们运行重复发布,因此Delpoyment policy 我们选择Allow redeploy。

    整体配置截图如下:

    3,创建一个proxy类型的docker仓库。

    proxy类型仓库,可以帮助我们访问不能直接到达的网络,如另一个私有仓库,或者国外的公共仓库,如官方的dockerhub镜像库。

    创建一个proxy类型的仓库

    • Name: proxy-docker-hub
    • Repository Connectors: 不设置。
    • Proxy

    Remote Storage

        : docker hub的proxy,这里填写: 

    https://registry-1.docker.io

        这个是官方默认的一个链接,我这里配置使用

    DaoCloud

        的容器加速:

    http://f1361db2.m.daocloud.io

    • Docker Index: Use Docker Hub
    • Storage:idocker-hub

    整体配置截图如下:

    4,创建一个group类型的docker仓库。

    group类型的docker仓库,是一个聚合类型的仓库。它可以将前面我们创建的3个仓库聚合成一个URL对外提供服务,可以屏蔽后端的差异性,实现类似透明代理的功能。
    • name:docker-group
    • Repository Connectors:启用了一个监听在8082端口的http连接器;
    • Storage:选择专用的blob存储idocker-hub。
    • group : 将左边可选的3个仓库,添加到右边的members下。

    整体配置截图如下:

    到这儿,nexus3的配置算是完成了,接下来就是使用方面的事情了。

    3,小插曲。

    大家也看到了上边的截图都是比较长的,这几张图来的并不容易。在获取这些图的过程中,我尝试过自己御用的截图工具,也尝试过Chrome的网页截图,还尝试过其他的各种截图工具,无论是截全屏,还是滚动截图,无所不用其极,却无一能够截出令自己满意的图,哎,都是完美主义(强迫症)做的怪,于是,趁着公司已经夜深无人,我最终通过如下方式截到了心仪的长图。

    不为别的,只为把所分享的东西做的足够精致。当然,各位观众朋友如果有更好的截图工具,并且在nexus3这个界面里截出了像我截的那么长的图的话,欢迎在评论区留言分享。

    4,常规方式使用。

    请注意,这种方式经我测试,总是失败,原因还没查出来。如果有人知道原因是什么,麻烦留言区告知一下。

    1,配置

    配置/etc/docker/daemon.json, 由于不是https,所以要在daemon.json中配置一下:

    1. { "insecure-registries":["192.168.157.110:8082"] }

    2,重启docker。

    1. $systemctl daemon-reload
    2. $systemctl restart docker

    3,pull镜像。

    1. docker pull redis

    4,登陆私服。

    1. docker login -u admin -p admin123 192.168.157.110:8082

    5,打标签。

    1. docker tag docker.io/redis 192.168.157.110:8082/redis

    6,push镜像。

    1. [root@docker ~]$docker push 192.168.157.110:8082/redis
    2.  
    3. 然后报错:
    4.  
    5. The push refers to a repository [192.168.157.110:8082/redis]
    6. 902afb26cfff: Layer already exists
    7. 21497520b817: Layer already exists
    8. a3514b4102be: Layer already exists
    9. 714e32c05337: Layer already exists
    10. d98fb630fb3b: Layer already exists
    11. 8b15606a9e3e: Layer already exists
    12. error parsing HTTP 404 response body: unexpected end of JSON input: ""

    暂时不知这个报错问题的原因是什么,因为最终没有采用这种方式,所以没有深入探究。

    5,nginx代理方式。

    以下内容参考张戈博客,中有删改。

    在部署 Nginx 部分,我们先需要生成自签名 SSL 证书,因为后面不想在 docker pull 的时候还要带一个端口!这里我们需要 2 个域名,一个用来展示 nexus 前台,另一个用做 docker 仓库,比如:

    • nexus 前台:repo.ald.com
    • docker 仓库:idocker.io

    1,安装nginx。

    先通过curl 192.168.106.10/a | sh安装nginx。

    2,生成证书。

    生成自签名 SSL 证书的方法网上很多,这里推荐一个一键生成工具,大家可以尝试使用:

  • 相关阅读:
    python 购物车和三级菜单
    python-装饰器
    day3 python 函数
    day3 python 集合 文件
    two day python基础知识
    python-day 1
    Cordova 环境搭建
    javascript在html直接传值
    JavaScript疑难点
    Javascript创建对象的方法
  • 原文地址:https://www.cnblogs.com/cheyunhua/p/10763388.html
Copyright © 2020-2023  润新知