Nexus Docker私有仓库

Nexus Registry

安装配置

Nexus versiion 3.15.1-01

创建共享容器卷

docker volume create --driver local --opt type=none --opt device=$(pwd) --opt o=bind nexus-data

获取 nexus 镜像

docker pull sonatype/nexus3

启动镜像

docker run -d -p 8081:8081 --name nexus -v nexus-data:/nexus-data sonatype/nexus3

说明

镜像地址与说明

  • 启动参数说明

设置 jvm

变量名称:INSTALL4J_ADD_VM_PARAMS
默认:-Xms1200m -Xmx1200m -XX:MaxDirectMemorySize=2g -Djava.util.prefs.userRoot=${NEXUS_DATA}/javaprefs
配置实例:-e INSTALL4J_ADD_VM_PARAMS="-Xms2g -Xmx2g -XX:MaxDirectMemorySize=3g  -Djava.util.prefs.userRoot=/some-other-dir"

配置访问路径

NEXUS_CONTEXT:默认为/
-e NEXUS_CONTEXT=nexus

默认用户密码

admin/admin123

查看日志

docker logs -f nexus

YUM源配置

Nexus 配置

安装软件后会进行代理并存储在本地

  • 创建如下代理

    Nexus Docker私有仓库

  • yum-base

    Nexus Docker私有仓库

  • yum-epel

    Nexus Docker私有仓库

  • yum-extras

    Nexus Docker私有仓库

  • yum-updates

    Nexus Docker私有仓库

  • 效果

    Nexus Docker私有仓库

客户端配置

  • 基础源配置文件
cat nexus.repo
[nexus]
name=Nexus Repository
baseurl=http://172.18.0.11:8081/repository/yum-base/$releasever/os/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
priority=1

[nexus-updates]
name=Nexus CentOS-$releasever
enabled=1
failovermethod=priority
baseurl=http://172.18.0.11:8081/repository/yum-updates/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=http://172.18.0.11:8081/repository/yum-updates/RPM-GPG-KEY-CentOS-7

[nexus-extras]
name=Nexus CentOS-$releasever
enabled=1
failovermethod=priority
baseurl=http://172.18.0.11:8081/repository/yum-extras/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=http://172.18.0.11:8081/repository/yum-extras/RPM-GPG-KEY-CentOS-7
cat nexus-epel.repo
[nexus-epel]
name=Extra Packages for Enterprise Linux 7 - $basearch
baseurl=http://172.18.0.11:8081/repository/yum-epel/$releasever/$basearch
failovermethod=priority
enabled=1
gpgcheck=1
gpgkey=http://172.18.0.11:8081/repository/yum-epel/RPM-GPG-KEY-EPEL-7

[nexus-epel-debuginfo]
name=Extra Packages for Enterprise Linux 7 - $basearch - Debug
baseurl=http://172.18.0.11:8081/repository/yum-epel/$releasever/$basearch/debug
failovermethod=priority
enabled=0
gpgkey=http://172.18.0.11:8081/repository/yum-epel/RPM-GPG-KEY-EPEL-7
gpgcheck=1

[nexus-epel-source]
name=Extra Packages for Enterprise Linux 7 - $basearch - Source
baseurl=http://172.18.0.11:8081/repository/yum-epel/$releasever/SRPMS
failovermethod=priority
enabled=0
gpgkey=http://172.18.0.11:8081/repository/yum-epel/RPM-GPG-KEY-EPEL-7
gpgcheck=1

Docker 仓库

创建 Nexus3 Docker 仓库步骤

  1. 创建私有仓库

所有 push 操作需要指向该仓库
Nexus Docker私有仓库
Nexus Docker私有仓库
自行选择是否开启 V1版本 API 支持
Nexus Docker私有仓库

  1. 配置代理仓库
    Nexus Docker私有仓库

  2. 配置 group 组包含(私有仓库与代理仓库)
    pull 镜像操作可以使用配置该项时的端口进行,如果本地没有要 pull 的镜像会自动像代理请求,并且存放到本地
    Nexus Docker私有仓库
    Nexus Docker私有仓库

  3. 配置Realms 权限
    Nexus Docker私有仓库

  4. 增加docekrroles
    Nexus Docker私有仓库

  5. 增加 docekr 用户并应用规则
    Nexus Docker私有仓库

客户端配置

  1. 配置docker指定仓库

    [[email protected] ~]# cat /etc/docker/daemon.json
    {
      "insecure-registries": [
        "172.18.0.2:8082",
        "172.18.0.2:8083"
      ],
      "disable-legacy-registry": true
    }
    
  2. 登录仓库

    docker login 172.18.0.2:8083
    docker login 172.18.0.2:8082
    
  3. docker push镜像

    [[email protected] ~]# docker push 172.18.0.2:8083/nginx:1.14.3
    The push refers to a repository [172.18.0.2:8083/nginx]
    1295dc4c83dd: Pushed
    4e9c3671be7b: Pushed
    59b059d445c1: Pushed
    0246bb21855f: Pushed
    42acf078bf60: Pushed
    7bff100f35cb: Pushed
    1.14.3: digest: sha256:bb31b7147d854d94e2f0600f7f0a66bb0a6f2f5205d8a52ee7db9f069c44faed size: 1568
    
  4. docker pull

    本地仓库没有会进行代理下载

    [[email protected] ~]# docker pull 172.18.0.2:8082/alpine:3.8
    Trying to pull repository 172.18.0.2:8082/alpine ...
    3.8: Pulling from 172.18.0.2:8082/alpine
    cd784148e348: Pull complete
    Digest: sha256:3d2e482b82608d153a374df3357c0291589a61cc194ec4a9ca2381073a17f58e
    Status: Downloaded newer image for 172.18.0.2:8082/alpine:3.8
    
  5. 效果

    Nexus Docker私有仓库