美文网首页
Docker 安装Nexus3 仓库

Docker 安装Nexus3 仓库

作者: 上岸的魚 | 来源:发表于2020-03-13 22:33 被阅读0次

    1.安装

    镜像仓库有多种,目前常用的是Harbo或Nexus,由于Nexus支持范围更广,更适合项目开发团队使用,我们将选择使用Nexus建立内部仓库。
    由于我们前面安装了K8S环境,Nexus仓库我们可以使用K8S来安装及管理,也可以直接使用Docker安装,通常建议仓库独立于K8S环境安装,我们采用Docker直接部署。
    首先在服务器上创建目录/data/nexus/nexus-data,用于存储镜像数据。

    chmod 777 /data/nexus/nexus-data  #设置目录权限
    docker search nexus        #查询镜像
    docker run -d --name nexus3 \
     --restart=always \
    -p 8081:8081 \
    -p 8082:8082  \
    -p 8083:8083  \
    -p 8084:8084  \
    -p 8085:8085   \
    -v /data/nexus/nexus-data:/nexus-data \
    sonatype/nexus3
    

    2.配置

    安装完成后,我们使用http://ip:8081访问nexus。


    点击右上角登录,提示password需要去/nexus-data/admin.password文件中找
    使用下面的命令查看初始密码,注意路径,也可以使用docker exec -it 进容器中查看
    cat /data/nexus/nexus-data/admin.password #就可以看到初始密码了
    

    使用该密码登录后,我们开始初始化仓库
    新建Docker Host仓库


    类型选择docker(hosted),端口8083

    新建Docker Proxy仓库,端口8084
    docker proxy是指代理远程的仓库,通常是代理公开镜像仓库,可以建多个源,比如163/阿里,相当于建立一个传输通道。

    新建Docker Group仓库,端口8082
    Docker Group是一个仓库聚合,我们对外暴露仓库通常暴露该聚合仓库地址。
    聚合模式通常是本地Host仓库+Proxy远程仓库,如下,我们聚合了163和我们本地的仓库(优先本地),可以通过上下箭头调整优先级,上面的优先级高。


    创建完成后,我们可以mydocker-group的地址为
    http://ip:8081/repository/docker-group

    Realms设置

    3.使用

    修改docker的daemon仓库地址

    vim /etc/docker/daemon.json
    {
     "registry-mirrors": ["http://ip:8081"],
     "insecure-registries": ["ip:8081"],
     "graph": "/data/docker/path"
    }
    {
    "exec-opts": ["native.cgroupdriver=systemd"]
    }
    

    重启Docker

    systemctl daemon-reload
    systemctl restart docker
    

    测试是否可用

    [root@k8s-node2 nexus-data]# docker login http://192.168.0.230:8082
    Username: admin
    Password: 
    Error response from daemon: Get https://192.168.0.230:8082/v2/: http: server gave HTTP response to HTTPS client
    

    这个错误是因为我们使用的是http协议,而docker获取镜像默认走的是https,如果需要走http,则需要加入到例外清单中,方法如下:

    vim /etc/docker/daemon.json 
    {
     "insecure-registries": ["192.168.0.230:8082","192.168.0.230:8083","192.168.0.230:8084"],
     "registry-mirrors": ["http://192.168.0.230:8082"],
     "graph": "/data/docker/path"
    }
    {
    "exec-opts": ["native.cgroupdriver=systemd"]
    }
    

    重启容器:

    重启
    [root@k8s-node2 ~]# systemctl daemon-reload 
    [root@k8s-node2 ~]# sudo service docker restart
    再次尝试登录
    docker login http://192.168.0.230:8082
    Username: admin
    Password:
    WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
    Configure a credential helper to remove this warning. See
    https://docs.docker.com/engine/reference/commandline/login/#credentials-store
    
    Login Succeeded
    登录成功
    

    push一个镜像测试下

      #先打标签,nginx我们之前已经下载过,如果没有,则docker pull nginx下载
      docker tag  nginx  192.168.0.230:8082/nginx01:v1
      #推送到镜像仓库
      docker push 192.168.0.230:8082/nginx01:v1
     返回404错误: error parsing HTTP 404 response body: invalid character
    

    原因是我们使用8082是docker-group的端口
    我们改为8083端口(docker-host)重新尝试

     #先登录下8083端口  
    [root@k8s-node2 nexus-data]#  docker login http://192.168.0.230:8083
    Username: admin
    Password: 
    WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
    Configure a credential helper to remove this warning. See
    https://docs.docker.com/engine/reference/commandline/login/#credentials-store
    
    Login Succeeded
    #重新打一个标签
    [root@k8s-node2 nexus-data]#  docker tag  nginx  192.168.0.230:8083/nginx01:v1
    #推送
    [root@k8s-node2 nexus-data]#   docker push 192.168.0.230:8083/nginx01:v1
    The push refers to repository [192.168.0.230:8083/nginx01]
    55a77731ed26: Pushed 
    71f2244bc14d: Pushed 
    f2cb0ecef392: Pushed 
    v1: digest: sha256:3936fb3946790d711a68c58be93628e43cbca72439079e16d154b5db216b58da size: 948
    [root@k8s-node2 nexus-data]#   
    

    提示上传成功,如下图所示,我们已经可以在我们自己的仓库中看到该镜像。



    使用我们就可以直接内网pull:

    docker pull 192.168.0.230:8083/nginx01:v1
    v1: Pulling from nginx01
    68ced04f60ab: Pull complete 
    28252775b295: Pull complete 
    a616aa3b0bf2: Pull complete 
    Digest: sha256:3936fb3946790d711a68c58be93628e43cbca72439079e16d154b5db216b58da
    Status: Downloaded newer image for 192.168.0.230:8083/nginx01:v1
    

    4.其他

    Nexus支持的源很多,YUM源,Maven源,Nuget源均可以配置出来;另外可以配合Nginx或Kong映射出不同的域名:docker.xxxx.com/maven.xxx.com/nuget.xxx.com;nexus.xxx.com

    相关文章

      网友评论

          本文标题:Docker 安装Nexus3 仓库

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