当前位置: 首页 > 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;收藏❤️关注对我真的…...

MPNet:旋转机械轻量化故障诊断模型详解python代码复现

目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...

零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?

一、核心优势&#xff1a;专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发&#xff0c;是一款收费低廉但功能全面的Windows NAS工具&#xff0c;主打“无学习成本部署” 。与其他NAS软件相比&#xff0c;其优势在于&#xff1a; 无需硬件改造&#xff1a;将任意W…...

树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频

使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源&#xff1a; http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...

SCAU期末笔记 - 数据分析与数据挖掘题库解析

这门怎么题库答案不全啊日 来简单学一下子来 一、选择题&#xff08;可多选&#xff09; 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘&#xff1a;专注于发现数据中…...

vscode(仍待补充)

写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh&#xff1f; debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)

设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile&#xff0c;新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序

一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...

ios苹果系统,js 滑动屏幕、锚定无效

现象&#xff1a;window.addEventListener监听touch无效&#xff0c;划不动屏幕&#xff0c;但是代码逻辑都有执行到。 scrollIntoView也无效。 原因&#xff1a;这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作&#xff0c;从而会影响…...

是否存在路径(FIFOBB算法)

题目描述 一个具有 n 个顶点e条边的无向图&#xff0c;该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序&#xff0c;确定是否存在从顶点 source到顶点 destination的路径。 输入 第一行两个整数&#xff0c;分别表示n 和 e 的值&#xff08;1…...

蓝桥杯 冶炼金属

原题目链接 &#x1f527; 冶炼金属转换率推测题解 &#x1f4dc; 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V&#xff0c;是一个正整数&#xff0c;表示每 V V V 个普通金属 O O O 可以冶炼出 …...