企业内自搭建容器镜像服务-docker镜像服务

本文提供了搭建一个稳定、可复用的容器镜像服务器(私有镜像仓库),用于存储和管理 Docker 镜像,替代公共仓库(如 Docker Hub),满足内网 / 生产环境的镜像管理需求。基于最成熟的 Docker Registry 2.x,提供完整、可落地的搭建流程,包括基础部署、安全加固、客户端使用和运维技巧。

一、环境前置要求

确保你的服务器满足以下条件:

  • 操作系统:Linux(CentOS/Ubuntu/Debian 均可)
  • 已安装 Docker(版本 ≥ 20.10,安装教程可参考官方文档)
  • 开放 5000 端口(仓库默认端口,可自定义)
  • 服务器有至少 10GB 以上可用磁盘空间(存储镜像)

二、分步搭建流程

步骤 1:创建持久化目录(核心)

容器内的镜像数据默认存储在容器内部,删除容器会丢失数据,因此先创建宿主机目录挂载:

# 创建镜像存储目录mkdir-p /data/registry/images# 创建认证文件目录(后续用于密码登录)mkdir-p /data/registry/auth# 设置目录权限,避免权限不足chmod-R755/data/registry

步骤 2:配置用户认证(生产环境必选)

为仓库添加用户名密码认证,防止匿名访问:

# 安装 htpasswd 工具(生成密码文件)# CentOS/RHELyuminstall-y httpd-tools# Ubuntu/Debianaptupdate&&aptinstall-y apache2-utils# 创建管理员账号(示例:用户名 registry-admin,密码 123456Ab!)# -B:使用 bcrypt 加密(更安全);-c:创建新文件htpasswd -Bc /data/registry/auth/htpasswd registry-admin 123456Ab!# htpasswd -Bbn registry-admin 123456Ab! > auth/htpasswd# 如需添加更多用户,去掉 -c(避免覆盖):# htpasswd -B /data/registry/auth/htpasswd test-user 654321Ba!

步骤 3:启动 Registry 容器

通过 Docker 一键启动私有仓库,整合存储和认证:

dockerrun -d\--name private-registry\--restart=always\# 服务器重启后自动启动-p5000:5000\# 宿主机端口:容器端口(可改宿主机端口,如 8080:5000)-v /data/registry/images:/var/lib/registry\# 挂载镜像存储目录-v /data/registry/auth:/auth\# 挂载认证目录-e"REGISTRY_AUTH=htpasswd"\# 启用 htpasswd 认证-e"REGISTRY_AUTH_HTPASSWD_REALM=Private Registry"\# 认证提示语-e"REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd"\# 密码文件路径registry:2# 官方 Registry 2.x 镜像(稳定版)

步骤 4:验证仓库是否启动成功

# 1. 查看容器状态(显示 Up 表示运行正常)dockerps|grepprivate-registry# 2. 测试未认证访问(应返回 401 未授权)curlhttp://你的服务器IP:5000/v2/_catalog# 预期输出:{"errors":[{"code":"UNAUTHORIZED","message":"authentication required"}]}# 3. 测试认证访问(替换账号密码)curl-u registry-admin:123456Ab!http://你的服务器IP:5000/v2/_catalog# 预期输出:{"repositories":[]}(空列表表示仓库已就绪,暂无镜像)

三、客户端使用私有仓库(推送 / 拉取镜像)

步骤 1:客户端配置(允许访问私有仓库)

如果仓库未配置 HTTPS(内网场景),需要在客户端(推送 / 拉取镜像的机器)添加信任:

# 编辑 Docker 配置文件vi/etc/docker/daemon.json# 添加以下内容(替换为你的仓库地址){"insecure-registries":["你的服务器IP:5000"]}# 重启 Docker 生效systemctl restartdocker

步骤 2:登录私有仓库

dockerlogin 你的服务器IP:5000# 输入步骤2创建的用户名(registry-admin)和密码,提示「Login Succeeded」即成功

步骤 3:推送镜像到私有仓库

# 1. 给本地镜像打标签(格式:仓库地址/镜像名:标签)# 示例:将本地 nginx:latest 打标签为 192.168.1.100:5000/nginx:v1dockertag nginx:latest 你的服务器IP:5000/nginx:v1# 2. 推送镜像dockerpush 你的服务器IP:5000/nginx:v1# 3. 验证推送结果(查看仓库内的镜像列表)curl-u registry-admin:123456Ab!http://你的服务器IP:5000/v2/_catalog# 预期输出:{"repositories":["nginx"]}

步骤 4:从私有仓库拉取镜像

# 1. (可选)删除本地镜像,测试拉取dockerrmi 你的服务器IP:5000/nginx:v1# 2. 拉取镜像dockerpull 你的服务器IP:5000/nginx:v1# 3. 查看拉取结果dockerimages|grepnginx

四、进阶优化(生产环境建议)

1. 配置 HTTPS(避免明文传输)

如果仓库暴露在外网,建议配置 SSL 证书(以 Let’s Encrypt 免费证书为例):

# 假设证书文件路径:/data/registry/certs/fullchain.pem(公钥)、/data/registry/certs/privkey.pem(私钥)dockerrun -d\--name private-registry\--restart=always\-p443:5000\# 改用 443 端口(HTTPS 默认端口)-v /data/registry/images:/var/lib/registry\-v /data/registry/auth:/auth\-v /data/registry/certs:/certs\-e"REGISTRY_AUTH=htpasswd"\-e"REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd"\-e"REGISTRY_HTTP_TLS_CERTIFICATE=/certs/fullchain.pem"\-e"REGISTRY_HTTP_TLS_KEY=/certs/privkey.pem"\registry:2

2. 镜像清理(释放磁盘空间)

仓库运行一段时间后会产生无用镜像(如删除标签后的镜像),需定期清理:

# 进入容器执行清理命令dockerexec-it private-registry registry garbage-collect /etc/docker/registry/config.yml# 建议添加定时任务(每天凌晨 2 点清理)echo"0 2 * * * docker exec -it private-registry registry garbage-collect /etc/docker/registry/config.yml">>/var/spool/cron/root

总结

  1. 私有镜像仓库核心是基于 registry:2 镜像,通过目录挂载实现数据持久化,通过 htpasswd 实现密码认证。
  2. 客户端使用时,需先登录仓库,且镜像标签必须包含「仓库 IP: 端口」才能正常推送 / 拉取。
  3. 生产环境需开启认证,外网场景建议配置 HTTPS,同时定期清理无用镜像节省磁盘空间。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1159875.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

什么是网络安全攻防演练,即红蓝对抗?

定义与目的 定义:网络安全攻防演练是一种模拟真实网络攻击和防御场景的活动,通过组织专业的攻击队伍(红队)和防御队伍(蓝队)进行对抗,来检验和提升组织的网络安全防御能力、应急响应能力和安全运…

黑客技术?没你想象的那么难!——dns劫持篇

黑客技术?没你想象的那么难!——dns劫持篇 什么是DNS劫持? DNS劫持就是通过劫持了DNS服务器,通过某些手段取得某域名的解析记录控制权,进而修改此域名的解析结果,导致对该域名的访问由原IP地址转入到修改后…

【VirtualBox】【启动报错】

报错 VT-x is being used by another hypervisor (VERR_VMX_IN_VMX_ROOT_MODE). VirtualBox cant operate in VMX root mode. Please disable the KVM kernel extension, recompile your kernel and reboot (VERR_VMX_IN_VMX_ROOT_MODE). 返回 代码: NS_ERROR_FAILURE (0x80004…

Chrome浏览器增强便携版:集成Chrome++补丁,免安装即开即用

对于Chrome浏览器用户而言,官方版本存在自动更新干扰、安装路径固定、功能限制等问题。这款Chrome增强便携版通过技术创新完美解决了这些痛点,既保留了Chrome原有的优秀特性,又增加了诸多实用功能。 获取地址:点击访问 一、技术实…

火狐浏览器优化版tete009:免安装+内存管理重构+启动加速

作为开源浏览器的代表,Firefox以其强大的扩展生态和隐私保护特性备受推崇。然而,原版Firefox在长期使用中可能出现内存占用过高、启动速度下降等问题。tete009 Firefox​ 作为社区知名的优化版本,针对这些性能瓶颈进行了深度优化。 获取地址…

导师推荐!2026 9大AI论文网站测评:本科生毕业论文全攻略

导师推荐!2026 9大AI论文网站测评:本科生毕业论文全攻略 2026年AI论文网站测评:为何需要一份权威榜单? 随着人工智能技术的不断进步,AI写作工具在学术领域的应用日益广泛。对于本科生而言,从选题到成文的全…

用create-react-app脚手架创建react项目

创建项目npx create-react-app name --template typescript1、删掉src下多余的文件2、可去掉index.tsx中的严格模式root.render(// - <React.StrictMode><App />// - </React.StrictMode> );3、配置别名&#xff08;dilanx/craco需安装这个插件&#xff09; …

【Ubuntu 24.04 安装搜狗输入法完整教程】

摘要 Ubuntu 24.04 默认使用Fcitx5和Wayland&#xff0c;与搜狗输入法的Fcitx4框架存在兼容性问题。本教程通过降级到Fcitx4、切换到Xorg 显示服务器、安装必要依赖等步骤&#xff0c;解决安装冲突和显示异常问题。经实际验证&#xff0c;可成功在Ubuntu 24.04上稳定运行搜狗…

DLSS状态显示功能终极指南:从入门到精通全解析

DLSS状态显示功能终极指南&#xff1a;从入门到精通全解析 【免费下载链接】dlss-swapper 项目地址: https://gitcode.com/GitHub_Trending/dl/dlss-swapper 作为NVIDIA深度学习超级采样技术的忠实用户&#xff0c;我深知在游戏中确认DLSS是否正常工作的困扰。经过长期…

太流批了,清理大师

电脑使用的时间越久&#xff0c;产生的垃圾就越多&#xff0c;C盘就没有太多空间。今天给大家推荐一款专业的清理软件&#xff0c;能够快速清理无用的电脑垃圾&#xff0c;有需要的小伙伴可以下载收藏。 软媒清理大师 快速清理电脑垃圾 这款软件不需要安装&#xff0c;打开就能…

遥控设备MCU低功耗设计全链路方案

目录 一、 硬件层低功耗设计&#xff08;基石&#xff09; 1. MCU 选型与内核特性利用 2. 外设选型与供电优化 &#xff08;1&#xff09; 射频模块低功耗设计&#xff08;LoRa&#xff09; &#xff08;2&#xff09; 显示屏低功耗选型 &#xff08;3&#xff09; 按键与…

LIWC-Python终极指南:快速掌握文本情感分析技术

LIWC-Python终极指南&#xff1a;快速掌握文本情感分析技术 【免费下载链接】liwc-python Linguistic Inquiry and Word Count (LIWC) analyzer 项目地址: https://gitcode.com/gh_mirrors/li/liwc-python 在当今数据驱动的时代&#xff0c;文本情感分析已成为心理学研究…

如何给文件批量重命名?超详细文件批量重命名软件使用教程

你是否也曾面对过这样的窘境&#xff1a;从相机导出的上百张照片是杂乱无章的“IMG_xxxx.jpg”&#xff0c;下载的文档资料是一堆毫无关联的乱码&#xff0c;又或者收集的剧集文件命名格式五花八门&#xff1f;一个一个手动修改文件名&#xff0c;不仅枯燥乏味&#xff0c;还极…

python基于vue校园求职人才招聘管理系统django flask pycharm

目录 校园求职人才招聘管理系统摘要 开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01; 校园求职人才招聘管理系统摘要 该系统基于Python技术栈&#xff08;Django/Flask框架&#xff09;与Vu…

FlashMLA 加速推理技术

来源&#xff1a; https://developer.aliyun.com/article/1653387 代码&#xff1a;https://github.com/deepseek-ai/FlashMLAFlashMLA 简介 FlashMLA 是一款专为 NVIDIA Hopper 架构 GPU 优化的高效 MLA&#xff08;Multi-Head Linear Attention&#xff09;解码内核&#xff…

python基于vue的在线考试试卷批阅系统django flask pycharm

目录技术栈概述核心功能模块关键技术实现开发工具链扩展性设计开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;技术栈概述 Python作为后端开发语言&#xff0c;结合Django或Flask框架构建RE…

10个免费写小说软件推荐,一键搞定AI生成小说与大纲!(2026年实测红黑榜)

10个免费写小说软件推荐&#xff0c;一键搞定AI生成小说与大纲&#xff01;&#xff08;2025年终实测红黑榜&#xff09; 2026年了&#xff0c;如果你写小说还在靠‘憋’&#xff0c;那你可能已经输在起跑线上了。” 作为一个在键盘上敲了上千万字的码字工&#xff0c;我必须…

python基于vue的在线试题库考试系统的设计与实现django flask pycharm

目录 基于Vue与Python的在线试题库考试系统设计与实现 开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01; 基于Vue与Python的在线试题库考试系统设计与实现 该系统采用前后端分离架构&#xf…

门店管理系统价格解析:数千元到数十万元,受多重因素影响

当今&#xff0c;零售业数字化进程持续深入&#xff0c;那时门店管理系统已然成为实体商家用以提升运营效率以及优化顾客体验的核心工具。面对市场里琳琅满目的产品&#xff0c;好多商家首先所关心的问题是&#xff1a;一套门店管理系统所需投入的费用是多少&#xff1f;实际上…

python基于vue的招聘求职人才库平台django flask pycharm

目录技术栈选择核心功能模块数据存储与安全部署与优化扩展性设计开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;技术栈选择 Python作为后端开发语言&#xff0c;搭配Django或Flask框架构建…