zoukankan      html  css  js  c++  java
  • Linux (Centos) 上安装Nexus OSS 3 并搭建docker私有仓库

    Linux (Centos) 上安装Nexus OSS 3

    前言

    我安装Nexus的目的主要是想创建一个Docker的私有仓库。针对Docker私有仓库的搭建,目前有多种解决方案,有docker官方提供的registry镜像和Harbor等。

    首先来说registry, registry的入门比较简单, 也比较轻量级,符合我理想的私有仓库的入门方式,也能满足我当前的需求,缺点就是它过于轻量,只满足我当前的需求。考虑到将来一定是多用户协助开发项目的情况,所以将来一定会有用户,角色,权限控制的需求,所以我想一步到位,直接上有权限管控的私有仓库解决方案,不想为将来移植私有仓库埋下技术债务。再说Harbor, harbor提供了完善的权限管控,漂亮的管理界面,也符合我的扩展需求,但是由于harbor是多个开源项目整合而成的一个私有仓库解决方案,所以在安装入门阶段特别麻烦。如果没有其他选择,我肯定使用Harbor来搭建一个私有docker仓库。 比较了Harbor和Nexus后, 发现Nexus更符合我扩展性需求,首先它的底层是使用Java开发的,我的项目主体也是Java技术站,有很多基层设施可以重用,另外它还支持多种格式的私有仓库,支持maven, npm, docker等等一些私有仓库。安装方式更简洁,管理更简单,功能更强大。另外Harbor 是开源免费的,Nexus也开源,分为免费版和收费版,毕竟开源也得有饭吃,才能走得更远,发展得更好,将来项目盈利,也要买收费版支持一下。出于多方面的考虑,我选定了Nexus作为我私有仓库的解决方案。

    Nexus介绍

    叫Nexus的产品有很多,比如google 基于Android的手机Nexus,现在已经发展到第十代了. 思科有一款交换机也叫Nexus. 这里要介绍的是sonatype Nexus, 是一款私有仓库的解决,目前支持多种私有仓库的搭建,比如Maven, yum, npm私有库等等,详情请参考下图:

    更多详情可访问官方网站:https://www.sonatype.com/nexus/repository-oss-download

    github项目: https://github.com/sonatype/nexus-public

    从Nexus 3开始,Nexus已经支持 Docker仓库的创建,Nuxus2 是不支持Docker 镜像仓库的

    安装Nexus

    参考官方安装文档:https://help.sonatype.com/repomanager3/installation

    安装环境说明:

    Centos 7+

    系统要求:

    至少1 VCPU & 2 GB内存

    防火墙要打开 22 和 8081端口

    要安装OpenJDK 8

    所有的Nexus进程要以普通用户身份运行

    安装

     Nexus的安装有两种实现方式:

    1)通过targ.gz包安装

    下载地址,当前最新版本3.29.2-02

    https://help.sonatype.com/repomanager3/download

    Step 1:登陆Linux server 安装必要的工具包
    sudo yum update -y
    sudo yum install wget -y
    Step 2: 安装 OpenJDK 1.8
    sudo yum install java-1.8.0-openjdk.x86_64 -y
    Step 3: 切换到/opt
    cd /opt
    Step 4: 下载并安装

    这里下载最新的压缩安装包. 

    sudo wget -O nexus.tar.gz https://download.sonatype.com/nexus/3/latest-unix.tar.gz

    实际会被重定向到 https://sonatype-download.global.ssl.fastly.net/repository/downloads-prod-group/3/nexus-3.29.2-02-unix.tar.gz,由于众所周知的原因,下载速度可能会很...慢, 如果懂得Ke学上网,再不违反网络安全法的前提下,最好使用该项技能。所以如果要找历史版本,可以参考以上地址去找。

    感谢wjxScott的分享,花了几个小时的时间到处找安装包,最后在wjxScott的github库中找到了分享连接。在CSDN上也找到了下载连接,但是下载流程非常复杂,下载一次要掏0.43元,还要我安装CSDN app,  我是不会为这么流氓的软件付一分钱的,虽然我的百度网盘每月也要出18元会员费,但是觉得值得。

    这里我重新创建了一个百度网盘分享连接

    链接:https://pan.baidu.com/s/1vWvU5qMeWEmRIxEedM94tw 
    提取码:wpyx 
    复制这段内容后打开百度网盘手机App,操作更方便哦--来自百度网盘超级会员V2的分享

    下载完成后  scp 到服务器

    scp nexus-3.29.2-02-unix.tar.gz  remote_user@your_server_id:/tmp

     解压压缩包

    sudo tar -xvf /tmp/nexus-3.29.2-02-unix.tar.gz -C /opt

    更名

    sudo mv nexus-3* nexus

    Step 5: 创建用户

    出于安全考虑, 建议不要使用管理员身份运行或任何有sudo权限的用户来运行Nexus. 建议创建一个新用户来运行Nexus, 例如nexus

    sudo adduser nexus

    修改文件所有者,

    sudo chown -R nexus:nexus /opt/nexus
    sudo chown -R nexus:nexus /opt/sonatype-work

    注:如果不存在sonatype-work目录,则先创建它,再修改所有者。

    配置Nexus

    Step 1: 配置Nexus

     打卡/opt/nexus/bin/nexus.rc 文件

    sudo vi /opt/nexus/bin/nexus.rc

    配置以新用户nexus 运行程序

    取消run_as_user前面的注释,并配置如下

    run_as_user="nexus"
    Step 2: 修改默认数据存储路径

    默认情况下,按以上方式安装,数据会保存在/opt/sonatype-work/nexus3, 如果要修改默认路径,可以打开配置文件

    sudo vi /app/nexus/bin/nexus.vmoptions

    修改“-Dkaraf.data” 使其指向期望的数据目录
    
    
    Step 3: 将Nexus设为开机启动
    sudo vi /etc/systemd/system/nexus.service

    添加如下内容

    [Unit]
    Description=nexus service
    After=network.target
    
    [Service]
    Type=forking
    LimitNOFILE=65536
    User=nexus
    Group=nexus
    ExecStart=/opt/nexus/bin/nexus start
    ExecStop=/opt/nexus/bin/nexus stop
    User=nexus
    Restart=on-abort
    
    [Install]
    WantedBy=multi-user.target

    设为开机启动

    sudo systemctl enable nexus

    启动程序

    sudo systemctl start nexus

    使用命令查看服务状态

    如果出现问题,使用如下命令,查看具体问题

    sudo journalctl -xe

     如果以上日志没有帮助,可以继续查看/opt/nexus 目录下以hs_err_pid打头的日志文件

    服务默认监控在8081 端口上,如果一切顺利,这时通过打开浏览器访问http://your_server_id:8081能访问nexus管理界面.

    登陆用户名为admin, 默认密码保存在/opt/sonatype-work/nexus3/admin.password, 可以根据自己的需要进行修改

    cat /app/sonatype-work/nexus3/admin.password

    关闭nexus, 可以使用如下命令

    sudo systemctl stop nexus

    重启Nexus, 可以使用如下命令

    sudo systemctl restart nexus

    2)docker镜像方式安装(如果已经私有压缩包安装,此处略过)

    Docker Image https://hub.docker.com/r/sonatype/nexus3/

    此处暂时略过,等待尝试后更新

    安装完成并登陆后,将会看到一下界面

     

     搭建Docker 私有仓库

    详情可参考这篇文章,为了不使文档膨胀得过快,此处不做截图。

    点击设置界面,选择Repositories,点击Create repository 

    选择仓库类型,这里Docker有三种类型,分别是group、hosted、proxy。这里只演示hosted类型,所以选择docker(hosted): 

     注:Docker镜像仓库类型含义解释如下:

      hosted : 本地存储,即同docker官方仓库一样提供本地私服功能

      proxy : 提供代理其他仓库的类型,如docker中央仓库

      group : 组类型,实质作用是组合多个仓库为一个地址

    指定docker仓库的名称、指定一个端口用来通过http的方式进行访问仓库、勾选是否支持docker API V1,然后create repository;

    注意: 勾选这一项:Create an HTTP connector at specified port. Normally used if the server is behind a secure proxy

    并给定一个端口例如8089 此端口是用于镜像仓库的服务端口,后面客户端登陆要用到。

    这样一个镜像仓库就创建好了。

    配置docker客户端测试:

    客户端配置

    由于当前docker仓库没有配置https连接方式,所以是一种不安全的连接方式,在客户端配置时要将其添加到insecure-registries不安全的registries,

    这里的不安全主要是指登陆镜像仓库时输入的用户名,密码容易被网络中的第三者截取,所以最好在服务器端配置https, 虽然步骤麻烦点,但是配置完成后省心,这里只是将整个流程走通,如果是生产环境,墙裂建议配置 https。

    $vi /etc/docker/daemon.json
    {
        "registry-mirrors": ["https://xxxx.mirror.aliyuncs.com"],
        "insecure-registries":["http://192.168.xxx.x:8089"]
    }

    重启docker进程: systemctl restart docker

    查看docker信息: docker info ,有如下输出即正常

    登陆镜像仓库 

     上传镜像

    查看镜像

     将hello-world打标签,上传到私有仓库

     

     

     测试拉取镜像

    先清除本地镜像

     

     从私有仓库拉取镜像并运行

    至此,使用Nexus OSS 3.x 配置私有镜像仓库成功!还有更多特性等待深入探索,后续将会持续更新。

    参考文档

    https://blog.51cto.com/lzlutao/2378438

    https://devopscube.com/how-to-install-latest-sonatype-nexus-3-on-linux/

    https://www.cnblogs.com/kevingrace/p/6201984.html

    Nexus私服启动失败:

    https://blog.csdn.net/ziwuzhulin/article/details/79791674

    使用 Nexus Repository Manager 搭建私有docker仓库

    https://www.cnblogs.com/jihongjun/p/8968901.html

    转载请注明出处, 更多博文请访问https://www.cnblogs.com/guoapeng/
  • 相关阅读:
    获取ServletContext方法
    linux下echo命令详解
    非滤波单目视觉SLAM系统研究
    单目深度估计(Monocular Depth Estimation)之摄像机运动对深度估计的影响
    typedef函数指针用法
    REMODE+ORBSLAM运行配置(2) REMODE和编译后的ORB ros工程利用节点实现通讯
    跟我一起学习Makefile
    ubuntu下通过命令打开多个终端并在相应终端执指令
    REMODE+ORBSLAM运行配置(1) 把ORB编译成ROS工程
    ROS节点与运行
  • 原文地址:https://www.cnblogs.com/guoapeng/p/14380508.html
Copyright © 2011-2022 走看看