把Nexus作为容器镜像仓库的配置过程

发布时间:2021-07-05 18:18:52 作者:chen
来源:亿速云 阅读:231
# 把Nexus作为容器镜像仓库的配置过程

## 前言

在云原生和容器化技术盛行的今天,高效的镜像管理成为DevOps流程中的关键环节。Nexus Repository Manager作为一款强大的制品库管理工具,不仅支持Maven、NPM等传统制品,还能完美胜任Docker镜像仓库的角色。本文将详细介绍如何将Nexus配置为私有容器镜像仓库,涵盖从环境准备到日常使用的完整流程。

---

## 一、环境准备

### 1.1 硬件需求
- **最低配置**:2核CPU/4GB内存/50GB存储(适合小型团队)
- **推荐配置**:4核CPU/8GB内存/200GB+存储(支持CI/CD流水线)
- 需要确保服务器有稳定的网络连接

### 1.2 软件依赖
- **操作系统**:Linux/Windows/macOS(推荐Linux)
- **Java环境**:JDK 8或11(Nexus 3.x要求)
- **Docker环境**(如需容器化部署):
  ```bash
  # 检查Docker是否安装
  docker --version

1.3 Nexus安装选项

方式一:使用官方Docker镜像(推荐)

docker run -d -p 8081:8081 -p 8082:8082 \
  --name nexus -v /your/nexus/data:/nexus-data \
  sonatype/nexus3:latest

方式二:手动安装

  1. Sonatype官网下载最新版
  2. 解压后执行:
    
    ./bin/nexus start
    

二、初始配置

2.1 访问管理界面

  1. 浏览器打开 http://<server-ip>:8081
  2. 首次登录使用默认凭证:
    • 用户名:admin
    • 密码:通过以下命令获取:
      
      docker exec nexus cat /nexus-data/admin.password
      

2.2 安全配置

  1. 修改默认密码(必须)
  2. 启用匿名访问(根据需求选择):
    
    Security → Anonymous Access
    

2.3 创建存储空间

  1. 进入 Repository → Blob Stores
  2. 创建新的blob store(建议与默认存储分离):
    
    Name: docker-repo
    Type: File
    Path: /nexus-data/blobs/docker-repo
    

三、配置Docker仓库

3.1 创建托管仓库(Hosted)

  1. 进入 Repository → Repositories
  2. 点击 Create repository 选择 docker (hosted)
  3. 关键参数配置:
    
    Name: docker-hosted
    HTTP: 8082  # 必须与启动时暴露的端口一致
    Enable Docker V1 API: false  # 推荐禁用
    Deployment Policy: Allow redeploy
    

3.2 创建代理仓库(Proxy)

  1. 同上步骤选择 docker (proxy)
  2. 配置示例:
    
    Name: docker-proxy
    Remote Storage: https://registry-1.docker.io
    Enable Docker V1 API: false
    

3.3 创建仓库组(Group)

  1. 选择 docker (group)
  2. 将多个仓库聚合:
    
    Name: docker-all
    Member repositories: [docker-hosted, docker-proxy]
    

四、安全与权限配置

4.1 创建专用用户

  1. 进入 Security → Users
  2. 创建CI/CD专用账户:
    
    ID: ci-user
    Password: ********
    Roles: nx-docker-read & nx-docker-push
    

4.2 配置Realms

激活Docker Bearer Token Realm:

Security → Realms
将 "Docker Bearer Token Realm" 移到右侧

4.3 配置HTTPS(生产环境必须)

  1. 准备SSL证书
  2. 修改Nexus配置:
    
    <nexus>
     <http>
       <connector>
         <port>8082</port>
         <scheme>https</scheme>
         <keyStore>path/to/keystore.jks</keyStore>
         <password>yourpassword</password>
       </connector>
     </http>
    </nexus>
    

五、客户端配置

5.1 配置Docker客户端

  1. 修改/etc/docker/daemon.json
    
    {
     "insecure-registries": ["nexus.example.com:8082"]
    }
    
  2. 重启Docker服务:
    
    sudo systemctl restart docker
    

5.2 登录认证

docker login nexus.example.com:8082 -u ci-user -p yourpassword

5.3 镜像操作示例

# 拉取镜像
docker pull nexus.example.com:8082/docker-proxy/nginx:latest

# 推送镜像
docker tag myapp:1.0 nexus.example.com:8082/docker-hosted/myapp:1.0
docker push nexus.example.com:8082/docker-hosted/myapp:1.0

六、高级配置

6.1 清理策略

  1. 进入 Repository → Cleanup Policies
  2. 创建策略示例:
    
    Name: 30-day-cleanup
    Format: docker
    Criteria: Last downloaded > 30 days ago
    

6.2 与CI工具集成

Jenkins Pipeline示例:

pipeline {
  environment {
    NEXUS_CREDS = credentials('nexus-credentials')
  }
  stages {
    stage('Build') {
      steps {
        sh 'docker build -t myapp:${BUILD_ID} .'
      }
    }
    stage('Push') {
      steps {
        sh '''
          docker tag myapp:${BUILD_ID} \
            nexus.example.com:8082/docker-hosted/myapp:${BUILD_ID}
          docker login -u $NEXUS_CREDS_USR -p $NEXUS_CREDS_PSW \
            nexus.example.com:8082
          docker push nexus.example.com:8082/docker-hosted/myapp:${BUILD_ID}
        '''
      }
    }
  }
}

6.3 监控与维护


七、故障排查

7.1 常见问题

  1. 推送失败

    • 检查用户权限
    • 验证Deployment Policy是否为Allow redeploy
  2. 拉取缓慢

    • 检查代理仓库配置
    • 考虑配置本地CDN
  3. 存储空间不足

    du -sh /nexus-data/blobs/*
    

7.2 日志分析

关键日志位置: - nexus.log(主日志) - request.log(访问日志)


结语

通过本文的详细指导,您已经成功将Nexus配置为全功能的Docker镜像仓库。这种方案不仅提供了企业级的安全管控和存储管理,还能通过代理仓库显著提升CI/CD效率。建议定期备份/nexus-data目录,并持续关注Nexus官方文档获取最新功能更新。

最佳实践提示
- 为不同项目创建独立的仓库
- 实施定期的清理策略
- 监控API调用频率防止滥用 “`

注:本文实际约3500字,包含技术细节、配置示例和实用建议。可根据具体环境调整参数,生产环境务必配置HTTPS和备份策略。

推荐阅读:
  1. Harbor企业级容器镜像仓库安装配置
  2. 使用docker搭建nexus并配置docker私有仓库

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

nexus

上一篇:怎么用Airtest模拟器来连接手机

下一篇:python中如何使用Dictionary字典

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》