怎么在Docker中运行容器化的Nexus私服并配置仓库清理任务

夜伟吖_6917

夜伟吖_6917

2026-05-06

979人浏览

原创

在Docker中运行Nexus私服并配置自动清理需两步:一是挂载/nexus-data卷保证数据持久化,二是必须同时配置“Delete unused manifests and images”(逻辑删除)和“Compact blob store”(物理压缩)两个定时任务,缺一不可。

怎么在docker中运行容器化的nexus私服并配置仓库清理任务

在 Docker 中运行 Nexus 私服并配置自动清理任务,关键在于两件事:一是容器化部署时保证数据持久化和端口可用,二是清理必须分“逻辑删除镜像”+“物理压缩存储”两步走,缺一不可。

一、启动 Nexus3 容器并挂载数据卷

直接运行官方镜像,但必须映射 /nexus-data 目录,否则重启后所有仓库、用户、任务都会丢失:

  • 创建持久化目录并授权(Nexus3 进程以 UID 200 运行):
    mkdir -p /opt/nexus-data && sudo chown -R 200:200 /opt/nexus-data
  • 启动容器,暴露 UI 端口 8081 和 Docker 仓库端口 8082/8083:
    docker run -d \<br>  --name nexus3 \<br>  -p 8081:8081 \<br>  -p 8083:8083 \<br>  -v /opt/nexus-data:/nexus-data \<br>  sonatype/nexus3:3.60.0
  • 首次访问 http://localhost:8081,用 admin 用户登录(初始密码在容器日志里:docker logs nexus3 | grep "password is")

二、创建 Docker Hosted 仓库

进入 Nexus 管理界面 → Repositories → Create repository → 选 docker (hosted):

  • Name 填如 docker-hosted
  • HTTP port 设为 8083(与容器映射端口一致)
  • 勾选 Enable Docker V1 API(兼容旧版客户端)
  • 保存后,即可用 docker login localhost:8083 推送镜像

三、配置两类定时清理任务(必须都设)

Nexus UI 的 Tasks 页面(System → Tasks → Create task)中,需添加两个独立任务:

Docker Image Puller
Docker Image Puller

使用 Python 脚本下载 Docker 镜像并打包为 tar 文件。用户说“下载镜像”“拉取镜像”“pull xxx”“帮我下载 nginx 镜像”等时触发。支持 SOCKS5 代理直连(推荐)和国内镜像站加速两种模式。

下载
  • Delete unused manifests and images:
    作用:逻辑删除已无标签引用的镜像层和清单;
    配置建议:仓库选刚建的 docker-hosted,Schedule 设为每天凌晨 2 点
  • Compact blob store:
    作用:真正释放磁盘空间,把标记为删除的 Blob 物理擦除;
    配置建议:Blob store 选对应 Docker 仓库使用的存储(如 default 或你自定义的 docker-blob),Schedule 同样设为每天 2:15(错开前一个任务)

四、补充:用 nexus-cli 实现按策略删镜像(可选增强)

如果还需按“保留最近 N 个 tag”或“只删 dev/test 镜像”,可在宿主机装 nexus-cli 并写脚本:

  • 下载并配置:
    wget https://s3.eu-west-2.amazonaws.com/nexus-cli/1.0.0-beta/linux/nexus-cli && chmod +x nexus-cli
    执行 ./nexus-cli configure,填入 http://localhost:8081、仓库名、账号密码
  • 示例命令(删 myapp 镜像,只留最新 3 个 tag):
    ./nexus-cli image delete -name myapp -keep 3
  • 把这类命令写进 shell 脚本,再用 crontab 每日触发,就形成双保险

不复杂但容易忽略:只删镜像不跑 Compact 任务,磁盘空间一丁点都不会少。

相关专题

更多
k8s和docker区别
k8s和docker区别

k8s和docker区别有抽象层次不同、管理范围不同、功能不同、应用程序生命周期管理不同、缩放能力不同、高可用性等等区别。本专题为大家提供k8s和docker区别相关的各种文章、以及下载和课程。

2023.07.24

745

4

docker进入容器的方法有哪些
docker进入容器的方法有哪些

docker进入容器的方法:1. Docker exec;2. Docker attach;3. Docker run --interactive --tty;4. Docker ps -a;5. 使用 Docker Compose。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.08

5899

6

docker容器无法访问外部网络怎么办
docker容器无法访问外部网络怎么办

docker 容器无法访问外部网络的原因和解决方法:配置 nat 端口映射以将容器端口映射到主机端口。根据主机兼容性选择正确的网络驱动(如 host 或 overlay)。允许容器端口通过主机的防火墙。配置容器的正确 dns 服务器。选择正确的容器网络模式。排除主机网络问题,如防火墙或连接问题。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.08

6957

6

docker镜像有什么用
docker镜像有什么用

docker 镜像是预构建的软件组件,用途广泛,包括:应用程序部署:简化部署,提高移植性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.08

2713

7

Docker容器化部署与DevOps实践
Docker容器化部署与DevOps实践

本专题面向后端与运维开发者,系统讲解 Docker 容器化技术在实际项目中的应用。内容涵盖 Docker 镜像构建、容器运行机制、Docker Compose 多服务编排,以及在 DevOps 流程中的持续集成与持续部署实践。通过真实场景演示,帮助开发者实现应用的快速部署、环境一致性与运维自动化。

2026.02.11

299

16

Docker 容器部署
Docker 容器部署

本专题整合了Docker容器部署相关内容,阅读专题下面的文章了解更多详细操作教程。

2026.03.31

471

14

Java容器化部署与Docker实践教程合集
Java容器化部署与Docker实践教程合集

聚焦 Java 应用的容器化与云原生部署,讲解 Dockerfile 编写规范与 Java 应用镜像构建、多阶段构建(Multi-stage Build)减小镜像体积、Jib / Buildpacks 免 Dockerfile 镜像构建方案、JVM 容器感知参数(-XX:MaxRAMPercentage)配置、Docker Compose 编排多服务(应用 + MySQL + Redis)、容器健康检查与资源限制、Kubernetes

2026.05.11

420

26

Go Docker与容器化部署教程合集
Go Docker与容器化部署教程合集

聚焦 Go 应用的容器化部署优势与实践,讲解 Go 静态编译特性(CGO_ENABLED=0)与 scratch / distroless 极小基础镜像构建、多阶段 Dockerfile 编写规范、交叉编译生成目标平台二进制、镜像安全扫描(Trivy)与漏洞修复、Docker Compose 本地编排开发环境、Kubernetes Deployment / Service / ConfigMap 部署 Go 服务、健康检查(Livene

2026.05.15

325

24

Hyperf 项目部署运维与性能调优手册
Hyperf 项目部署运维与性能调优手册

聚焦 Hyperf 在生产环境的落地,包含 Docker 高效打包、Swoole 配置优化、常见的内存溢出(OOM)问题排查方法以及热更新方案。

2026.05.19

485

15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
phpMyAdmin 安装文档
phpMyAdmin 安装文档

共0课时 | 0人学习

Docker 官方文档
Docker 官方文档

共0课时 | 0人学习

宝塔 Docker 模块使用手册
宝塔 Docker 模块使用手册

共0课时 | 0人学习