• Nexus OSS 3 搭建 Docker & Git LFS 仓库


    目录

    • Nexus OSS 3 介绍
    • 环境、软件准备
    • Nexus OSS 3 服务搭建
    • Git LFS 仓库配置使用
    • Docker 私有仓库配置使用

    1、Nexus OSS 3 介绍

    我们知道 Nexus 是一个强大的 Maven 仓库管理器,它极大地简化了自己内部仓库的维护和外部仓库的访问。但那是 Nexus 2 时代,现在随着 Nexus 的不断完善和升级,现在 Nexus 3 在原有 Maven 基础上,新增 bower、docker、git lfs、npm、nuget、pypi、raw、rubygems、yum 支持,而且会持续更新增加对更多类型的支持。

    2、环境、软件准备

    本次演示环境,我是在本机 Mac OS 上操作,以下是安装的软件及版本:

    1. Java:version 1.8.0_91
    2. Docker:version 17.09.0-ce
    3. Git:version 2.10.1
    4. git-lfs:version 2.2.1
    5. GitLab:GitLab Community Edition 9.1.4
    6. Nexus:OSS 3.6.0-02

    注意:Nexus 需要运行在 Java 环境,所以需要先安装一下 JDK,后边演示 git-lfs 操作,需要本地先安装下 Git,Git 代码存储在 GitLab,需要先安装下 GitLab,后边演示 Docker 仓库操作,需要本地先安装 Docker,这里忽略 JDK、Docker、Git、git-lfs、GitLab 安装。git-lfs 安装过程可参考之前的文章 GitLab 之 Git LFS 大文件存储的配置

    3、Nexus OSS 3 服务搭建

    Nexus OSS 3 安装很简单,现在对应环境的软件安装包,解压安装配置即可,也或者 Docker 安装。目前最新版已经更新到 3.6.0-02。

    系统环境下载地址
    Unixhttp://download.sonatype.com/nexus/3/nexus-3.6.0-02-unix.tar.gz
    Windowshttp://download.sonatype.com/nexus/3/nexus-3.6.0-02-win64.zip
    OSXhttp://download.sonatype.com/nexus/3/nexus-3.6.0-02-mac.tgz
    Docker Imagehttps://hub.docker.com/r/sonatype/nexus3/

    1、安装包安装

    这里我本机选择 OSX 安装包,安装到本机 /Applications/soft/nexus3/ 目录。

    $ cd /Applications/soft/nexus3/
    $ cp /Users/wanyang3/Downloads/nexus-3.6.0-02-mac.tgz ./
    $ tar -zxvf nexus-3.6.0-02-mac.tgz
    $ ls -l nexus-3.6.0-02
        LICENSE.txt
        NOTICE.txt
        bin
        deploy
        etc
        lib
        public
        system
    $ ./bin/nexus start|stop|run|run-redirect|status|restart|force-reload
    $ ls -l /Applications/soft/nexus3/
        nexus-3.6.0-02
        sonatype-work
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    这里简要说明下各个目录的作用:

    • bin: 包含 Nexus 启动 | 停止等脚本,以及一些跟启动有关联的配置参数,如JVM、karaf等
    • etc: 包含主配置文件 nexus-default.properties,以及一些其他配置文件,如ssl、jetty、karaf等
    • lib: 包含跟 karaf 相关的 jar 包
    • public: 包含跟 Nexus 应用相关的公共资源
    • system: 包含所有组成 Nexus 应用的组件和插件
    • sonatype-work 目为 Nexus 默认数据存储目录,包含所有组件、仓库、配置、db、日志等。

    Nexus 启动后默认端口是 8081,通过浏览器访问 http://localhost:8081 即可进入 Nexus 页面。如果想更改端口号,可以修改 <nexus_install_dir>/etc/nexus-default.properties文件,指定其他端口号如: application-port=9999

    2、docker images 安装

    $ docker pull sonatype/nexus3
    $ docker run -d -p 9999:8081 --name nexus3 sonatype/nexus3 
    
    测试是否启动成功
    $ curl -u admin:admin123 http://localhost:9999/service/metrics/ping
    • 1
    • 2
    • 3
    • 4
    • 5

    启动完成后,会进入初始化界面,然后进入主界面,初始管理员账户为 admin,初始密码 admin123 登录。

    这里写图片描述

    这里写图片描述

    4、Git LFS 仓库配置使用

    Git LFS 操作之前先在本地安装好 Git LFS,安装方法可参考 GitLab 之 Git LFS 大文件存储的配置

    4.1 创建一个 Git LFS Hosted 仓库

    admin 登录 —> 设置 —> Repository —> Repositories —> gitlfs (hosted),输入 Name(这里我输入 gitlfs-hosted) 以及选择 Deployment policy 类型为 Allow redeploy (允许重新部署),默认为 Disable redeploy (不允许重新部署) ,还有 Read-only(只读类型)。

    这里写图片描述

    4.2 配置项目的 Git LFS

    这里我以一个在 gitlab 上开启了 git-lfs 的项目 demo2 为例,配置该项目针对某种类型的大文件上传到刚刚搭建的 Nexus 服务的 gitlfs-hosted 仓库下,顺便可以验证下当配置了多个 git-lfs 存储方案的项目时,git-lfs 存储选择方案。

    $ cd demo2
    $ git config -f .lfsconfig lfs.url http://localhost:9999/repository/gitlfs-hosted/info/lfs #会在当前目录生成一个 .lfsconfig 配置文件,需要一并提交到 Git,否则Clone 的时候不会去配置的地址上找
    $ cat .lfsconfig
      [lfs]
          url = http://localhost:9999/repository/gitlfs-hosted/info/lfs
    $ cp ~/Downloads/soft/apache-tomcat-7.0.70.zip ./
    $ git lfs track "*.zip"  #设置存储到 LFS 的文件扩展名,这里我设置 .zip 后缀格式的文件
    $ cat .gitattributes  #自动生成的文件,需一并提交到 Git,否则 Clone 项目的时候 Git LFS 不起作用
      * .zip filter=lfs diff=lfs merge=lfs -text
    $ git add .
    $ git commit -m "test lfs"
    $ git push origin master
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    操作完成后,我们可以登录 Nexus 查看刚刚 commit 的文件 apache-tomcat-7.0.70.zip 是否上传到指定的 gitlfs-hosted 下吧。

    这里写图片描述

    5、Docker 私有仓库配置使用

    Nexus 3 可以创建三种类型的 Docker 仓库:

    1. docker (proxy) 代理和缓存远程仓库,例如 Docker Hub、Google Container Registry 等,只能 pull。
    2. docker (hosted) 托管仓库,创建私有仓库,可以 push 和 pull。
    3. docker (group) 将多个 proxy 和 hosted 仓库添加到一个组,整个成一个源,只访问一个组地址即可,只能pull。

    这里我们创建一个 hosted 类型的私有仓库。

    5.1 创建一个 Docker Hosted 仓库

    admin 登录 —> 设置 —> Repository —> Repositories —> docker (hosted)。

    • 输入 Name 这里我输入 docker-hosted。
    • HTTP 设置,可以设置一个其他端口号(当服务经过代理后可使用),这里我设置成18443,下边 push 时往该端口 push。
    • Force basic authentication 设置,是否允许任何人 pull,也即是否公开。这里设置不公开。
    • Enable Docker V1 API 设置,是否支持 V1 API,这里设置支持,这样支持类型更多了。
    • Deployment policy 设置,是否允许重新部署或者只读,这里设置为 Allow redeploy 允许重新部署。

    这里写图片描述

    5.2 Docker 操作

    这里我们以 nginx:1.11 为例,测试能否 push 到指定 docker-hosted 仓库。

    $ docker tag nginx:1.11 10.236.65.131:18443/common/nginx:1.11
    $ docker images
      ......
      10.236.65.131:18443/common/nginx        1.11           01f818af747d        9 months ago        182MB
      nginx                                   1.11           01f818af747d        9 months ago        182MB
      ......
    $ docker login -u admin -p admin123 10.236.65.131:18443
      Login Succeeded
    $ docker push 10.236.65.131:18443/common/nginx:1.11
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    注意:10.236.65.131 为我本机 ip 地址,端口号使用设置的 18443。如果执行 docker login ... 操作报错:

    $ docker login -u admin -p admin123 10.236.65.131:18443
      Error response from daemon: Get https://10.236.65.131:18443/v2/: http: server gave HTTP response to HTTPS client
    • 1
    • 2
    • 如果系统是 MacOS,则可以点击 “Preference” 里面的 “Advanced” 在 “Insecure Registry” 里加上 10.236.65.131,重启 Docker 客户端就可以了。
    • 如果系统是 Ubuntu,则修改配置文件 /lib/systemd/system/docker.service,修改 [Service] 下 ExecStart 参数,增加 –insecure-registry 10.236.65.131。
    • 如果系统是 Centos,可以修改配置 /etc/sysconfig/docker,将 OPTIONS 增加 –insecure-registry 10.236.65.131。

    这里写图片描述

    参考资料

    正因为当初对未来做了太多的憧憬,所以对现在的自己尤其失望。生命中曾经有过的所有灿烂,终究都需要用寂寞来偿还。
  • 相关阅读:
    bower使用记录
    前端生成二维码
    删除顽固node_modules
    vue初体验:实现一个增删查改成绩单
    H5常用代码:适配方案5
    H5常用代码:适配方案4
    H5常用代码:适配方案3
    ARFA 教堂的第四次洗礼&斜率优化重学
    CSP考前总结&周二晚+周三晚模拟考总结&洛谷11月月赛 III Div.1总结
    T44253 绝美的挣扎 题解
  • 原文地址:https://www.cnblogs.com/candlia/p/11920222.html
Copyright © 2020-2023  润新知