资讯动态

Nexus 搭建私有 Docker 镜像仓库完全指南:从创建仓库到推送镜像

发布时间:2026/8/12 10:20:17 来源:尧图企业网站定制
引言在掌握 Docker 基础使用并且会推送镜像到公共仓库之后团队内部通常需要搭建私有镜像仓库来存储和管理自己构建的镜像。Nexus 是一个流行的仓库管理工具支持多种仓库类型包括 Docker。本节课将详细讲解如何在 Nexus 中创建私有 Docker 仓库并完成从登录到推送镜像的完整实操步骤。核心内容在 Nexus 中创建 Docker 私有镜像仓库创建仓库步骤进入 Nexus 管理界面的仓库管理页面新建仓库选择Docker hosted类型用于存储我们自己推送的 Docker 镜像命名仓库后选择之前创建好的 blob 存储保留其余默认配置即可创建完成。仓库信息配置项值Namedocker-hostedFormatdockerTypehostedURLhttp://157.230.22.19:8081/repository/docker-hosted/权限配置需要为访问该仓库创建专用角色新建角色NX Docker添加docker-hosted仓库访问权限普通用户使用View权限即可。将该角色赋予已有用户完成权限配置。Docker 仓库网络配置配置 HTTP 连接器Docker 客户端无法直接访问带路径的仓库 URL 端点如http://IP:8081/repository/docker-hosted/需要为 Docker 仓库单独分配一个独立端口。由于本次使用 HTTP 非加密连接需要勾选开启 HTTP 连接器设置一个不同于 Nexus 主端口的独立端口示例中使用8083保存配置后Nexus 服务器会开放该端口监听 Docker 客户端请求。开放防火墙端口需要在云服务器防火墙示例中为 DigitalOcean Droplets 防火墙中放开配置的 8083 端口否则外部 Docker 客户端无法访问该仓库。验证端口监听可以通过netstat -lnpt命令验证端口是否正常监听rootubuntu-s-4vcpu-8gb-fra-1-01:~# netstat -lnpt Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:8083 0.0.0.0:* LISTEN 1639/java tcp 0 0 0.0.0.0:8081 0.0.0.0:* LISTEN 1639/javaNexus 服务端额外配置启用 Docker Bearer Token RealmDocker 登录后 Nexus 需要颁发认证令牌给客户端存储。默认该 Realm 是未激活状态需要在Realms设置中激活Docker Bearer Token Realm后保存配置。不激活该 Realm 会导致 Docker 登录失败这是常见配置错误点。Docker 客户端配置配置不安全镜像仓库Docker 客户端默认只允许连接 HTTPS 加密的镜像仓库由于我们的 Nexus 使用 HTTP 连接需要将仓库地址添加到不安全仓库白名单Linux 系统直接编辑/etc/docker/daemon.json添加insecure-registries配置项。Docker DesktopMac/Windows进入设置 → Docker Engine添加配置后点击Apply restart重启 Docker。{ builder: { gc: { defaultKeepStorage: 20GB, enabled: true } }, experimental: false, insecure-registries: [157.230.22.19:8083], features: { buildkit: true } }登录并推送镜像Docker 登录重启 Docker 后执行docker login命令传入仓库地址IP端口输入分配了权限的 Nexus 用户名密码% docker login 157.230.22.19:8083 Username: nana Password: Login Succeeded登录成功后Docker 会在本地~/.docker/config.json保存认证令牌后续操作无需重复登录。推送镜像的正确步骤本地构建镜像docker build -t my-app:1.0 .重新打标签将镜像标记为私有仓库地址格式隐式指定推送目标。docker tag my-app:1.0 157.230.22.19:8083/my-app:1.0注意标签格式错误如多一个斜杠会导致格式报错正确格式为[仓库地址]/[镜像名]:[标签]。执行推送docker push 157.230.22.19:8083/my-app:1.0推送结果验证推送完成后进入 Nexus 的Browse界面可以看到镜像的分层存储结构v2/ ├── blobs/ # 镜像层数据sha256 哈希命名 └── my-app/ ├── manifests/ # 镜像元数据 └── tags/1.0 # 标签信息Docker 镜像的每一层都会作为单独的资产存储不同镜像可以复用相同层这就是 Docker 分层存储的优势。通过 Nexus API 查询镜像信息可以通过 curl 调用 Nexus API 获取仓库中的镜像列表和元信息curl -u nana:password http://157.230.22.19:8081/service/rest/v1/search?repositorydocker-hosted返回结果为 JSON 格式包含镜像 ID、名称、版本、资产信息、校验和等完整元数据。总结本节课完成了在 Nexus 中搭建私有 Docker 镜像仓库的完整流程创建仓库选择Docker hosted类型命名并配置 blob 存储。权限配置创建NX Docker角色为仓库添加访问权限并赋予用户。网络配置为 Docker 仓库配置独立端口如 8083开放防火墙验证端口监听。Realm 激活启用Docker Bearer Token Realm以支持认证令牌颁发。客户端配置将 HTTP 仓库地址添加到 Docker 不安全仓库白名单重启 Docker。登录与推送执行docker login重新打标签格式为[仓库地址]/[镜像名]:[标签]执行docker push。验证在 Nexus 界面查看镜像分层存储结构或通过 API 查询元数据。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价