当前位置: 首页 > news >正文

【Docker】使用 Docker Registry 搭建自己的 Docker 镜像仓库

使用 Docker Registry 搭建自己的 Docker 镜像仓库

在使用 Docker 进行应用程序的开发和部署时,使用 Docker 镜像仓库是一个很好的实践。它允许集中存储和管理 Docker 镜像,方便团队协作和版本控制。在本文中,将介绍如何使用 Docker Registry 搭建自己的 Docker 镜像仓库,并提供配置文件和配置说明。

什么是 Docker Registry?

Docker Registry 是官方提供的开源镜像仓库软件,它允许存储和分发 Docker 镜像。可以将 Docker Registry 作为私有仓库使用,以便在内部部署和管理镜像。

步骤一:安装 Docker Registry

要安装 Docker Registry,请按照以下步骤进行操作:

  1. 安装 Docker:安装 Docker 引擎。可以按照 Docker 官方文档中的说明进行安装。

  2. 配置 Docker Registry:创建一个用于存储镜像的目录,例如 /var/lib/docker/registry。确保具有足够的权限来访问该目录。

  3. 创建配置文件:在 /etc/docker/registry/config.yml 路径下创建一个配置文件。可以使用以下示例作为起点:

    version: 0.1
    log:level: infoformatter: text
    storage:filesystem:rootdirectory: /var/lib/docker/registry
    

    这是一个基本的配置文件示例,指定了存储目录为 /var/lib/docker/registry

  4. 启动 Docker Registry 容器:使用以下命令启动 Docker Registry 容器,并将配置文件挂载到容器中:

    docker run -d -p 5000:5000 --restart=always --name registry \
    -v /etc/docker/registry/config.yml:/etc/docker/registry/config.yml \
    -v /var/lib/docker/registry:/var/lib/registry registry:2
    

    这将从 Docker Hub 上拉取最新的 Docker Registry 镜像,并将容器映射到本地的 5000 端口,并将配置文件和存储目录挂载到容器中。

  5. 验证安装:使用浏览器访问 http://<your-server-ip>:5000/v2/_catalog,如果能够看到一个空的镜像目录,则说明 Docker Registry 安装成功。

步骤二:上传和下载镜像

一旦 Docker Registry 安装完成,可以开始上传和下载 Docker 镜像。

对于上传镜像,需要先将的镜像打标签为 Registry 的地址。假设的服务器 IP 地址为 your-server-ip,可以使用以下命令来打标签:

docker tag <your-image>:<tag> <your-server-ip>:5000/<your-image>:<tag>

然后,使用以下命令将镜像推送到 Docker Registry:

docker push <your-server-ip>:5000/<your-image>:<tag>

对于下载镜像,可以使用以下命令从 Docker Registry 获取镜像:

docker pull <your-server-ip>:5000/<your-image>:<tag>

步骤三:配置 Docker 客户端

默认情况下,Docker 客户端不会信任非 HTTPS 的镜像仓库。为了能够使用 Docker Registry,需要在 Docker 客户端上进行一些配置。

  1. 编辑 Docker 配置文件:打开 /etc/docker/daemon.json 文件(如果不存在,请创建该文件)。

  2. 添加信任配置:在文件中添加以下内容:

    {"insecure-registries": ["<your-server-ip>:5000"]
    }
    

    替换 <your-server-ip> 为的 Docker Registry 服务器的 IP 地址。

  3. 重启 Docker 服务:使用以下命令重启 Docker 服务,以使配置生效:

    sudo systemctl restart docker
    

现在,应该可以使用配置好的 Docker 客户端与 Docker Registry 进行交互。

配置文件说明

以下是 Docker Registry 配置文件的一些常见配置选项的说明:

  • version:配置文件的版本号。
  • log:用于配置日志相关的选项,如日志级别和格式化方式。
  • storage:用于配置镜像存储的选项。
    • filesystem:指定使用文件系统作为存储后端。
      • rootdirectory:指定存储镜像的根目录。
  • http:用于配置 HTTP 服务的选项。
    • addr:指定 HTTP 服务的地址和端口,默认为 :5000
    • headers:用于配置自定义的 HTTP 头部。
  • https:用于配置 HTTPS 服务的选项。如果希望启用 HTTPS 支持,可以配置以下选项:
    • addr:指定 HTTPS 服务的地址和端口,默认为 :443
    • tls:用于配置 TLS 协议的选项。
      • certificate:指定 TLS 证书的路径。
      • key:指定 TLS 密钥的路径。
  • auth:用于配置身份验证的选项。如果希望对 Docker Registry 进行身份验证,可以配置以下选项:
    • htpasswd:指定 Htpasswd 文件的路径。Htpasswd 文件包含用户名和密码的哈希值。
  • notifications:用于配置事件通知的选项。
    • endpoints:指定事件通知的目标地址。
  • health:用于配置健康检查的选项。可以配置健康检查的路径和端口。
  • redis:用于配置和 Redis 数据库的集成。可以指定 Redis 的地址和端口。

在配置文件中,可以根据实际需求进行自定义配置,例如更改存储目录、添加身份验证等。

示例

以要配置删除 Docker Registry 中镜像的权限需要在配置文件中设置 delete 权限。配置文件中的相应配置项是 auth

auth 配置项中,可以配置不同类型的身份验证,例如基于 Htpasswd 文件的身份验证。可以为不同的用户或用户组分配不同的权限,包括删除镜像的权限。

以下是一个示例 auth 配置项的部分内容,演示如何配置删除权限:

auth:htpasswd:# ...其他配置...realm: Registry Realmpath: /path/to/htpasswdaccess:- name: deleteactions: ["delete"]

在上述示例中,access 配置项定义了一个名为 delete 的权限,该权限具有 delete 操作。可以根据实际需求进行更改和扩展。

结论

通过使用 Docker Registry,可以搭建自己的 Docker 镜像仓库,方便存储和管理 Docker 镜像。使用 Docker Registry,可以轻松地上传和下载镜像,并与团队成员共享和协作。

在本文中,介绍了使用 Docker Registry 搭建 Docker 镜像仓库的步骤,包括安装 Docker Registry、上传和下载镜像、配置 Docker 客户端以及配置文件说明。希望本文对搭建 Docker 镜像仓库有所帮助。

相关文章:

【Docker】使用 Docker Registry 搭建自己的 Docker 镜像仓库

使用 Docker Registry 搭建自己的 Docker 镜像仓库 在使用 Docker 进行应用程序的开发和部署时&#xff0c;使用 Docker 镜像仓库是一个很好的实践。它允许集中存储和管理 Docker 镜像&#xff0c;方便团队协作和版本控制。在本文中&#xff0c;将介绍如何使用 Docker Registr…...

Spring 是什么框架?

Spring 是 Java EE 编程领域的一款轻量级的开源框架&#xff0c;由被称为“Spring 之父”的 Rod Johnson 于 2002 年提出并创立&#xff0c;它的目标就是要简化 Java 企业级应用程序的开发难度和周期。 Spring 自诞生以来备受青睐&#xff0c;一直被广大开发人员作为 Java 企业…...

Azure添加网络接口

添加网络接口的意义 在 Azure 上&#xff0c;为虚拟机添加网络接口的意义包括以下几个方面&#xff1a; 扩展网络带宽&#xff1a;通过添加多个网络接口&#xff0c;可以增加虚拟机的网络带宽&#xff0c;提高网络传输速度和数据吞吐量。实现网络隔离&#xff1a;每个网络接口…...

Linux 内核第一版 (v0.01) 开源代码解读

探索Linux v0.01的内部结构&#xff0c;Linux内核经常被认为是一个庞大的开源软件。在撰写本文时&#xff0c;最新版本是v6.5-rc5&#xff0c;包含36M行代码。不用说&#xff0c;Linux是几十年来许多贡献者辛勤工作的成果。 Linux 内核首个开源版本 (v0.01) 的体积非常小&…...

tp6 v3微信退款

/*** Notes:退款* param $out_trade_no 支付时候订单号&#xff08;order表 original_bn&#xff09;两个参数选一个这个要选对* param $out_refund_no 退款订单号* param $total 订单金额* param $refund 退款金额* Time: 2023-08-10*/public function refundMoney($out_trade…...

使用 AndroidX 增强 WebView 的能力

在App开发过程中&#xff0c;为了在多个平台上保持一致的用户体验和提高开发效率&#xff0c;许多应用程序选择使用 H5 技术。在 Android 平台上&#xff0c;通常使用 WebView 组件来承载 H5 内容以供展示。 一.WebView 存在的问题 自 Android Lollipop 起&#xff0c;WebVie…...

Maven基础之仓库、命令、插件机制

文章目录 Maven 仓库中央仓库和本地仓库中央仓库本地仓库 Maven 命令generate 命令compile 命令clean 命令test 命令package 命令install 命令 Maven 插件机制官方插件&#xff1a;Compile 插件Tomcat 7 插件 Maven 仓库 中央仓库和本地仓库 [✎] 简单一点说 中央仓库是一个网…...

【ArcGIS】经纬度数据转化成平面坐标数据

将点位置导入Gis中&#xff0c;如下&#xff08;经纬度表征位置&#xff09;&#xff1a; 如何利用Gis将其转化为平面坐标呢&#xff1f; Step1 坐标变换 坐标变换&#xff0c;打开ArcToolbox&#xff0c;找到“数据管理工具”->“投影和变换”->“要素”->“投影”…...

使用自己的数据利用pytorch搭建全连接神经网络进行回归预测

使用自己的数据利用pytorch搭建全连接神经网络进行回归预测 1、导入库2、数据准备3、数据拆分4、数据标准化5、数据转换6、模型搭建7、模型训练8、模型预测9、完整代码 1、导入库 引入必要的库&#xff0c;包括PyTorch、Pandas等。 import numpy as np import pandas as pd f…...

103.216.154.X服务器出现漏洞了有什么办法?

服务器出现漏洞是一种严重的安全风险&#xff0c;需要及时采取措施来应对。以下是一些常见的应对措施&#xff1a; 及时更新补丁&#xff1a;确保服务器上的操作系统、应用程序和软件都是最新版本&#xff0c;并及时应用相关的安全补丁&#xff0c;以修复已知的漏洞。 强化访问…...

数据结构:堆的实现(C实现)

个人主页 &#xff1a; 个人主页 个人专栏 &#xff1a; 《数据结构》 《C语言》 文章目录 一、堆二、实现思路1. 结构的定义2. 堆的构建 (HeapInit)3. 堆的销毁 (HeapDestroy)4. 堆的插入 (HeapPush)5. 堆的删除 (HeapPop)6. 取堆顶的数据 (HeapTop)7. 堆的数据个数 (HeapSize…...

数据分析两件套ClickHouse+Metabase(一)

ClickHouse篇 安装ClickHouse ClickHouse有中文文档, 安装简单 -> 文档 官方提供了四种包的安装方式, deb/rpm/tgz/docker, 自行选择适合自己操作系统的安装方式 这里我们选deb的方式, 其他方式看文档 sudo apt-get install -y apt-transport-https ca-certificates dirm…...

urllib爬虫模块

urllib爬取数据 import urllib.request as request# 定义url url "https://www.baidu.com" #模拟浏览器发起请求获取响应对象 response request.urlopen(url)""" read方法返回的是字节形式的二进制数据 二进制--》字符串 解码 decode( 编码的格式…...

TCP消息传输可靠性保证

TCP链接与断开 -- 三次握手&四次挥手 三次握手 TCP 提供面向有连接的通信传输。面向有连接是指在数据通信开始之前先做好两端之间的准备工作。 所谓三次握手是指建立一个 TCP 连接时需要客户端和服务器端总共发送三个包以确认连接的建立。在socket编程中&#xff0c;这一…...

Visual Studio 与QT ui文件

对.ui文件鼠标右键&#xff0c;然后单击 Open with…在弹出的窗口中&#xff0c;选中左侧的 Qt Designer&#xff0c;然后单击右侧的 Add 按钮&#xff0c;随后会弹出一个窗口&#xff0c;在 Program: 输入框中输入 Qt Designer 的路径&#xff0c;最后单击 OK找到 Qt Designer…...

竞赛项目 深度学习验证码识别 - 机器视觉 python opencv

文章目录 0 前言1 项目简介2 验证码识别步骤2.1 灰度处理&二值化2.2 去除边框2.3 图像降噪2.4 字符切割2.5 识别 3 基于tensorflow的验证码识别3.1 数据集3.2 基于tf的神经网络训练代码 4 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x…...

ORA-00845: MEMORY_TARGET not supported on this system

处理故障时&#xff0c;发现startup实例失败&#xff0c;报错ORA-00845: MEMORY_TARGET not supported on this system SYSorcl1> startup; ORA-00845: MEMORY_TARGET not supported on this system 查看alert日志&#xff0c;报错如下 Starting ORACLE instance (normal…...

wps设置一键标题字体和大小

参考 wps设置一键标题字体和大小&#xff1a;https://www.kafan.cn/A/7v5le1op3g.html 统一一键设置...

TIA博途WINCC_如何在IO域中保证输入数值只能为正数?

TIA博途WINCC_如何在IO域中保证输入数值只能为正数? 在某些情况下,输入的数值受到限制,本例就以输入的数值必须为正整数为例进行说明。 如下图所示,在PLC的全局DB块中添加一个测试变量,数据类型为Int(该数据类型的范围为-32768~+32767), 如下图所示,将该测试变量拖拽到…...

《Linux从练气到飞升》No.13 Linux进程状态

&#x1f57a;作者&#xff1a; 主页 我的专栏C语言从0到1探秘C数据结构从0到1探秘Linux菜鸟刷题集 &#x1f618;欢迎关注&#xff1a;&#x1f44d;点赞&#x1f64c;收藏✍️留言 &#x1f3c7;码字不易&#xff0c;你的&#x1f44d;点赞&#x1f64c;收藏❤️关注对我真的…...

开发者必看:如何在自己的项目中集成 cryptocurrency-icons

开发者必看&#xff1a;如何在自己的项目中集成 cryptocurrency-icons 【免费下载链接】cryptocurrency-icons A set of icons for all the main cryptocurrencies and altcoins, in a range of styles and sizes. 项目地址: https://gitcode.com/gh_mirrors/cr/cryptocurren…...

seo网上教程有哪些常见错误

SEO网上教程有哪些常见错误 在互联网时代&#xff0c;SEO&#xff08;搜索引擎优化&#xff09;已经成为网站流量和排名提升的关键因素。很多人在学习SEO过程中&#xff0c;常常会遇到一些误区&#xff0c;甚至在网上找到的一些教程中也包含了不少错误。本文将详细介绍一些常见…...

避坑指南:用SwinUnet跑通Synapse医学图像分割,我踩过的那些环境与数据坑

SwinUnet医学图像分割实战避坑指南&#xff1a;从环境配置到模型测试的完整解决方案 第一次接触SwinUnet进行医学图像分割时&#xff0c;我像大多数初学者一样&#xff0c;满怀信心地克隆了GitHub仓库&#xff0c;准备大展身手。然而现实很快给了我一记重击——从Python版本冲突…...

OpenClaw备份方案:Qwen3-4B-Thinking自动化数据归档系统

OpenClaw备份方案&#xff1a;Qwen3-4B-Thinking自动化数据归档系统 1. 为什么需要自动化备份系统 作为一个长期与代码和数据打交道的开发者&#xff0c;我经历过太多次"数据灾难"——硬盘突然损坏导致项目丢失&#xff0c;误删重要文件后无法恢复&#xff0c;甚至…...

OpenClaw技能开发:让Kimi-VL-A3B-Thinking理解自定义图表类型

OpenClaw技能开发&#xff1a;让Kimi-VL-A3B-Thinking理解自定义图表类型 1. 为什么需要定制图表解析能力 上周我尝试用OpenClaw自动整理一批金融研报时&#xff0c;遇到了一个典型问题&#xff1a;当Kimi-VL-A3B-Thinking遇到K线图时&#xff0c;它会把蜡烛图简单描述为&quo…...

济民健康医疗服务占比提升至46%!业务结构调整初见成效

济民健康医疗服务占比提升至46%&#xff01;业务结构调整初见成效济民健康2025年财报显示&#xff0c;公司医疗服务板块收入占比提升至46%&#xff0c;成为业绩重要支撑。尽管全年净利润预亏2.5亿至2.1亿元&#xff0c;但业务结构调整成效显著&#xff0c;医疗服务板块营收同比…...

智能电池充电:使用PID控制器优化SOC附Matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。&#x1f34e; 往期回顾关注个人主页&#xff1a;Matlab科研工作室&#x1f34a;个人信条&#xff1a;格物致知,完整Matlab代码及仿真咨询…...

当PLC网口IP丢了怎么办?用Wireshark抓LLDP包,免费找回施耐德M580的地址

工业现场急救指南&#xff1a;用Wireshark找回施耐德M580 PLC的失踪IP地址 那天下午三点&#xff0c;工厂生产线突然停机&#xff0c;监控系统显示PLC通讯中断。当我冲到控制柜前&#xff0c;发现前任工程师留下的文档里&#xff0c;M580的IP地址记录栏赫然写着"见设备标签…...

flac3d7.0主应力方向导出与可视化:使用fish导出单元体数据并用matlab绘制塑性区图

flac3d7.0主应力方向的导出并绘图 使用fish将单元体的三个主应力方向数据导出&#xff0c;并使用matlab绘图&#xff0c;可只对部分区域(如塑性区)的数据进行绘图在岩土工程数值模拟后处理中&#xff0c;三维主应力方向可视化是个挺有意思的活。今天咱们直接上手实操&#xff0…...

博物馆展览门户|基于springboot + vue博物馆展览门户系统(源码+数据库+文档)

博物馆展览门户系统 目录 基于springboot vue博物馆展览门户系统 一、前言 二、系统功能演示 三、技术选型 四、其他项目参考 五、代码参考 六、测试参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 基于springboot vue博物馆展览门户系统 一、前言 博主…...