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

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站&#xff0c;会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后&#xff0c;网站没有变化的情况。 不熟悉siteground主机的新手&#xff0c;遇到这个问题&#xff0c;就很抓狂&#xff0c;明明是哪都没操作错误&#x…...

shell脚本--常见案例

1、自动备份文件或目录 2、批量重命名文件 3、查找并删除指定名称的文件&#xff1a; 4、批量删除文件 5、查找并替换文件内容 6、批量创建文件 7、创建文件夹并移动文件 8、在文件夹中查找文件...

2025年能源电力系统与流体力学国际会议 (EPSFD 2025)

2025年能源电力系统与流体力学国际会议&#xff08;EPSFD 2025&#xff09;将于本年度在美丽的杭州盛大召开。作为全球能源、电力系统以及流体力学领域的顶级盛会&#xff0c;EPSFD 2025旨在为来自世界各地的科学家、工程师和研究人员提供一个展示最新研究成果、分享实践经验及…...

对WWDC 2025 Keynote 内容的预测

借助我们以往对苹果公司发展路径的深入研究经验&#xff0c;以及大语言模型的分析能力&#xff0c;我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际&#xff0c;我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测&#xff0c;聊作存档。等到明…...

postgresql|数据库|只读用户的创建和删除(备忘)

CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...

【单片机期末】单片机系统设计

主要内容&#xff1a;系统状态机&#xff0c;系统时基&#xff0c;系统需求分析&#xff0c;系统构建&#xff0c;系统状态流图 一、题目要求 二、绘制系统状态流图 题目&#xff1a;根据上述描述绘制系统状态流图&#xff0c;注明状态转移条件及方向。 三、利用定时器产生时…...

Spring AI 入门:Java 开发者的生成式 AI 实践之路

一、Spring AI 简介 在人工智能技术快速迭代的今天&#xff0c;Spring AI 作为 Spring 生态系统的新生力量&#xff0c;正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务&#xff08;如 OpenAI、Anthropic&#xff09;的无缝对接&…...

实现弹窗随键盘上移居中

实现弹窗随键盘上移的核心思路 在Android中&#xff0c;可以通过监听键盘的显示和隐藏事件&#xff0c;动态调整弹窗的位置。关键点在于获取键盘高度&#xff0c;并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...

【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统

目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索&#xff08;基于物理空间 广播范围&#xff09;2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...

laravel8+vue3.0+element-plus搭建方法

创建 laravel8 项目 composer create-project --prefer-dist laravel/laravel laravel8 8.* 安装 laravel/ui composer require laravel/ui 修改 package.json 文件 "devDependencies": {"vue/compiler-sfc": "^3.0.7","axios": …...