【Docker】搭建 Docker 镜像仓库
文章目录
- 前言:公有仓库和私有仓库
- 公共镜像仓库
- 私有镜像仓库
- 一、搭建 Docker 镜像仓库
- 1.1 搭建简化版的镜像仓库
- 1.2 搭建带有图形化界面的镜像仓库
- 1.3 配置 Docker 信任地址
- 二、向私有镜像仓库推送和拉取镜像
- 2.1 推送本地镜像到私有仓库
- 2.2 拉取私有仓库中的镜像
前言:公有仓库和私有仓库
在 Docker 生态系统中,镜像仓库(Docker Registry)扮演着关键的角色,用于存储和分享 Docker 镜像。镜像仓库有公共的和私有的两种形式,每种形式都有其特定的应用场景。
公共镜像仓库
- Docker Hub
Docker Hub 是 Docker 公共仓库,是最大的 Docker 镜像仓库之一。它提供了大量的公共镜像供用户使用。你可以在 Docker Hub 上找到官方的基础镜像,也可以找到其他用户分享的各种应用和工具的镜像。
- 国内云服务商提供的公共仓库
由于 Docker Hub 在国内访问速度较慢,一些国内的云服务商提供了类似于 Docker Hub 的公开服务。例如,网易云镜像服务、DaoCloud 镜像服务、阿里云镜像服务等,都提供了稳定、快速的公共镜像仓库。
私有镜像仓库
- 为什么搭建私有镜像仓库?
虽然公共仓库提供了大量的镜像供用户使用,但在一些特定的场景下,企业或个人可能希望搭建自己的私有 Docker Registry。主要原因包括:
-
安全性: 一些敏感的应用或数据不适合存储在公共仓库中,因此需要一个受控的、私有的存储环境。
-
带宽控制: 在一些特殊网络环境下,使用公共仓库的下载速度可能不理想,搭建私有仓库可以更好地控制镜像的拉取速度。
-
定制需求: 企业可能有自己特殊的镜像需求,需要在内部构建和管理特定版本的镜像。
- Docker Registry
Docker Registry 是 Docker 提供的官方仓库服务,支持用户搭建自己的私有镜像仓库。你可以将 Docker Registry 部署在自己的服务器上,并通过简单的配置来实现私有仓库的搭建。
搭建私有 Docker Registry 的详细步骤可以参考官方文档:Docker Registry 部署。
- 私有 Docker Registry 在企业中的应用
在企业内部,私有 Docker Registry 的应用非常广泛。它不仅为企业提供了更加安全和可控的镜像管理环境,还支持企业内部的持续集成和持续部署流程。通过搭建私有仓库,企业可以更好地管理和定制自己的镜像,确保应用的稳定和安全运行。
总的来说,选择使用公共仓库还是搭建私有仓库,取决于具体的使用场景和需求。在实际应用中,有时候也会采用公共仓库和私有仓库结合的方式,根据实际需求灵活选择。
一、搭建 Docker 镜像仓库
在 Docker 生态系统中,镜像仓库(Docker Registry)用于存储和管理 Docker 镜像。你可以选择使用公共仓库,比如 Docker Hub,也可以搭建私有的 Docker Registry,方便自己团队或组织内部使用。
官网地址:https://hub.docker.com/_/registry。
1.1 搭建简化版的镜像仓库
Docker 官方提供了一个简化版的 Docker Registry 镜像,具备完整的仓库管理功能,但缺乏图形化界面。下面是一个简单的搭建命令:
docker run -d \--restart=always \--name registry \-p 5000:5000 \-v registry-data:/var/lib/registry \registry
这个命令中的参数说明:
-d: 后台运行容器。--restart=always: 设置容器总是在 Docker 启动时重新启动。--name registry: 为容器指定一个名字,这里是registry。-p 5000:5000: 将主机的 5000 端口映射到容器的 5000 端口。-v registry-data:/var/lib/registry: 挂载数据卷registry-data到容器内的/var/lib/registry目录,用于持久化存储镜像数据。registry: 使用的镜像名称。
通过上述命令,就成功运行了一个 Docker Registry 服务。访问 http://主机IP:5000/v2/_catalog 可以查看当前私有镜像服务中包含的镜像。
1.2 搭建带有图形化界面的镜像仓库
有一些第三方工具可以为 Docker Registry 提供图形化界面,使得镜像的管理更加直观。一个常用的工具是 docker-registry-ui。通过 Docker Compose,我们可以很容易地搭建一个带有图形化界面的 Docker Registry 服务。以下是一个简单的 docker-compose.yml 文件:
version: '3.0'
services:registry:image: registryvolumes:- ./registry-data:/var/lib/registryui:image: joxit/docker-registry-ui:staticports:- 8080:80environment:- REGISTRY_TITLE=私有仓库- REGISTRY_URL=http://registry:5000depends_on:- registry
这个 docker-compose.yml 文件包括两个服务:registry 和 ui。其中,registry 使用官方 Docker Registry 镜像,并挂载数据卷;ui 使用 docker-registry-ui 镜像,并配置了环境变量,包括私有仓库的标题和地址。
1.3 配置 Docker 信任地址
因为私服采用的是 HTTP 协议,默认不被 Docker 信任,所以需要进行配置。编辑 Docker 守护进程配置文件:
# 打开要修改的文件
vim /etc/docker/daemon.json
添加如下内容:
"insecure-registries": ["http://主机IP:8080"]
保存并退出。重载 Docker 守护进程配置并重启 Docker:
systemctl daemon-reload
systemctl restart docker
通过以上步骤,就成功搭建了一个简化版的 Docker 镜像仓库,并且还可以使用 Docker Compose 部署一个带有图形化界面的 Docker Registry。

然后通过浏览器访问:http://主机IP:8080/,就可以看到私有镜像查看的 UI 界面了。

二、向私有镜像仓库推送和拉取镜像
2.1 推送本地镜像到私有仓库
- 例如,现在要把本地的镜像
nginx,重新tag为nginx:1.0,注意,名称前缀为私有仓库的地址:192.168.150.101:8080/。
docker tag nginx:latest 192.168.211.128:8080/nginx:1.0
其含义是给本地镜像打上一个新标签,使其适应私有仓库地址。

- 然后再把它推送到私有仓库:
docker push 192.168.211.128:8080/nginx:1.0
其含义是将标签过的镜像推送到私有仓库。

- 推送成功后,就可以在私有仓库的图形化界面中看到相应的镜像。

2.2 拉取私有仓库中的镜像
拉取镜像是将远程仓库中的镜像下载到本地使用的过程。使用 Docker 命令可以很方便地从私有仓库中拉取镜像。
推送本地镜像到私有仓库的过程已经很详细了。接下来,我们来看一下拉取镜像的步骤。
现在私有仓库中有一个镜像 nginx:1.0,我们可以通过以下命令将其拉取到本地:
docker pull 192.168.211.128:8080/nginx:1.0
这个命令的含义是从指定的私有仓库地址拉取标签为 1.0 的 nginx 镜像。
拉取成功后,就可以在本地使用这个镜像。
例如,拉取私有仓库镜像的整个步骤:
-
首先删除本地的
nginx镜像

-
从私有仓库拉取镜像
可以直接在私有仓库的 UI 界面直接复制拉取镜像的命令:

执行在终端中执行这个命令,发现拉取成功了:

相关文章:
【Docker】搭建 Docker 镜像仓库
文章目录 前言:公有仓库和私有仓库公共镜像仓库私有镜像仓库 一、搭建 Docker 镜像仓库1.1 搭建简化版的镜像仓库1.2 搭建带有图形化界面的镜像仓库1.3 配置 Docker 信任地址 二、向私有镜像仓库推送和拉取镜像2.1 推送本地镜像到私有仓库2.2 拉取私有仓库中的镜像 …...
Python数据攻略-Pandas的数据计算、拼接与可视化
如何将数据转化为有用的信息?在数据分析的世界里,仅仅拥有大量数据是不够的。需要有方法去“翻译”这些数据,让它们告诉我们一些有用的信息。 本篇文章要探讨的内容:如何使用Pandas进行数据计算、拼接和可视化,从而让数据“说话”。 文章目录 Pandas的数据计算基本数学运…...
【计算机网络】HTTPS协议详解
文章目录 一、HTTPS协议 介绍 1、1 HTTP协议不安全的体现 1、2 什么是 HTTPS协议 二、加密的一些概念 2、1 怎么理解加密 2、2 为什么要加密 2、3 常见的加密方式 2、2、1 对称加密 2、2、2 非对称加密 三、HTTPS协议探究加密过程 3、1 只使用对称加密 3、2 只是用非对称加密 3…...
Septentrio接收机二进制的BDS b2b改正数解码
Galileo的HAS和BDS B2b改正数为实时PPP提供了可能,要实现实时PPP解算,必须对对应的数据进行解码。由于没有做过解码的工作,现结合qzsl6tool代码对Septentrio的解码代码进行学习。 1. 二进制枕头的识别和解码 定义一个读取数据的类ÿ…...
nvm 管理 node版本
下载地址 https://nvm.uihtm.com/download.html 基础命令 查看所有可安装的node版本 nvm list available 查看本地已经安装的所有版本: nvm list 安装指定的node版本 nvm install 14.18.1 使用指定node版本 nvm use 14.18.1 卸载指定node版本 nvm uninstall …...
LeetCode 15.三数之和
三数之和 问题描述 LeetCode 15.三数之和 给你一个整数数组 nums,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k,同时还满足 nums[i] nums[j] nums[k] 0。请你返回所有和为 0 且不重复的三元组。 注意:答…...
Linux实用操作(固定IP、进程控制、监控、文件解压缩)
目录 一、快捷键 1、ctrl c强制停止 2、ctrl d退出或登出 3、历史命令搜索history 4、光标移动快捷键 5、清屏 二、软件安装 1、CentOS的yum命令 2、Ubantu的apt命令 三、systemctl命令 四、软连接 五、日期、时区 1、date命令 2、修改Linux时区为东八区 3、nt…...
Redis高可用之哨兵模式、集群
文章目录 一、Redis哨兵模式1.1 简介1.2 哨兵模式的作用1.3 哨兵结构1.4 故障转移机制(重要)1.5 主节点选举机制 二、部署Redis哨兵模式Step1 修改 Redis 哨兵模式的配置文件(所有节点操作)Step2 实现基于VIP(虚拟IP&a…...
Python数据攻略-DataFrame的创建与基础特性
在数据分析、科学计算或者任何需要处理表格数据的领域,DataFrame都是一个非常重要的工具。就像Excel让处理表格数据变得简单一样,DataFrame也有类似的功能,但更加强大,特别是在处理大量数据时。了解DataFrame不仅能帮你更高效地处理数据,还能让你更容易进行数据清洗、可视…...
【word】从正文开始设置页码
在写报告的时候,会要求有封面和目录,各占一页。正文从第3页开始,页码从正文开始设置 word是新建的 分出三节(封面、目录、正文) 布局--->分割符--->分节符--->下一页 这样就能将word分为3节,分…...
计算机网络 快速了解网络层次、常用协议、常见物理设备。 掌握程序员必备网络基础知识!!!
文章目录 0 引言1 基础知识的定义1.1 计算机网络层次1.2 网络供应商1.3 猫、路由器、交换机1.4 IP协议1.5 TCP、UDP协议1.6 HTTP、HTTPS、FTP协议1.7 Web、Web浏览器、Web服务器 2 总结 0 引言 在学习的过程中总是会对IP、TCP、UDP、HTTP、HTTPS、FTP这些常见的协议不熟悉&…...
CUDA 安装
查看自己电脑的cuda版本:见文章 查看CUDA版本 我的是: 他的意思就是说:俺的显卡支持的cuda版本是12.0的(向下兼容) 然后我的项目tensorflow-gpu版本是1.13.2版本的,对应的cuda为10: ÿ…...
Springboot+vue的在线试题题库管理系统(有报告),Javaee项目,springboot vue前后端分离项目。
演示视频: Springbootvue的在线试题题库管理系统(有报告),Javaee项目,springboot vue前后端分离项目。 项目介绍: 本文设计了一个基于Springbootvue的前后端分离的在线试题题库管理系统,采用M&…...
【简单的留言墙】HTML+CSS+JavaScript
目标:做一个简单的留言墙 1.首先我们用HTML的一些标签,初步构造区域 样式。 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>留言墙</title><style>/* ...... */ …...
linux 火狐浏览器报错Firefox is already running, but is not responding
Ubuntu环境下打开Firefox报错: Firefox is already running, but is not responding.-CSDN博客 killall firefox...
Python:操作SQLite数据库简单示例
本文用最简单的示例演示python标准库提供的SQLite数据库进行新增、查询数据的过程。 代码文件app.py # -*- coding: UTF-8 -*- from flask import Flask import sqlite3app Flask(__name__)app.route(/) def hello_world():return Hello World!#创建数据库 app.route(/creat…...
第8期ThreadX视频教程:应用实战,将裸机工程移植到RTOS的任务划分,驱动和应用层交互,中断DMA,C库和中间件处理等注意事项
视频教程汇总帖:【学以致用,授人以渔】2023视频教程汇总,DSP第12期,ThreadX第8期,BSP驱动第26期,USB实战第5期,GUI实战第3期(2023-10-01) - STM32F429 - 硬汉嵌入式论坛 …...
【NeurIPS 2023】Backdoor对抗攻防论文汇总
NeurIPS 对抗攻防论文 NeurIPS2022|对抗攻防论文整理 - 知乎 NeurIPS 2023 Papers BIRD: Generalizable Backdoor Detection and Removal for Deep Reinforcement Learning https://neurips.cc/virtual/2023/poster/70618 摘要: 后门攻击对深度强化学习&…...
(Note)在Excel中选中某一行至最后一行的快捷键操作
在 Excel 中,选中一行至最后一行的快捷键是 “Shift 空格 Ctrl 方向键下”。按住 Shift 键,然后按下空格键以选中整行,接着按下 Ctrl 键保持选中状态,并按下方向键下键盘按钮以扩展选中范围至最后一行。 简要步骤如下…...
古记事法:Windows 下 16 位汇编环境搭建指南(DOSBox-X 篇)
文章目录 参考环境DOSBox-XWOWWindows On Windows 产生的原因Windows On Windows 的工作原理WOW16 的结束与 WOW64 的未来 在现代操作系统中运行 16 位应用程序DOSBox-X 16 位汇编环境的搭建应用准备挂载自动挂载dosbox-x.conf配置工具 参考 项目描述搜索引擎Bing、GoogleAI 大…...
Chapter03-Authentication vulnerabilities
文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...
【Java学习笔记】Arrays类
Arrays 类 1. 导入包:import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序(自然排序和定制排序)Arrays.binarySearch()通过二分搜索法进行查找(前提:数组是…...
定时器任务——若依源码分析
分析util包下面的工具类schedule utils: ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类,封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz,先构建任务的 JobD…...
Pinocchio 库详解及其在足式机器人上的应用
Pinocchio 库详解及其在足式机器人上的应用 Pinocchio (Pinocchio is not only a nose) 是一个开源的 C 库,专门用于快速计算机器人模型的正向运动学、逆向运动学、雅可比矩阵、动力学和动力学导数。它主要关注效率和准确性,并提供了一个通用的框架&…...
在Ubuntu24上采用Wine打开SourceInsight
1. 安装wine sudo apt install wine 2. 安装32位库支持,SourceInsight是32位程序 sudo dpkg --add-architecture i386 sudo apt update sudo apt install wine32:i386 3. 验证安装 wine --version 4. 安装必要的字体和库(解决显示问题) sudo apt install fonts-wqy…...
uniapp 开发ios, xcode 提交app store connect 和 testflight内测
uniapp 中配置 配置manifest 文档:manifest.json 应用配置 | uni-app官网 hbuilderx中本地打包 下载IOS最新SDK 开发环境 | uni小程序SDK hbulderx 版本号:4.66 对应的sdk版本 4.66 两者必须一致 本地打包的资源导入到SDK 导入资源 | uni小程序SDK …...
抽象类和接口(全)
一、抽象类 1.概念:如果⼀个类中没有包含⾜够的信息来描绘⼀个具体的对象,这样的类就是抽象类。 像是没有实际⼯作的⽅法,我们可以把它设计成⼀个抽象⽅法,包含抽象⽅法的类我们称为抽象类。 2.语法 在Java中,⼀个类如果被 abs…...
DBLP数据库是什么?
DBLP(Digital Bibliography & Library Project)Computer Science Bibliography是全球著名的计算机科学出版物的开放书目数据库。DBLP所收录的期刊和会议论文质量较高,数据库文献更新速度很快,很好地反映了国际计算机科学学术研…...
上位机开发过程中的设计模式体会(1):工厂方法模式、单例模式和生成器模式
简介 在我的 QT/C 开发工作中,合理运用设计模式极大地提高了代码的可维护性和可扩展性。本文将分享我在实际项目中应用的三种创造型模式:工厂方法模式、单例模式和生成器模式。 1. 工厂模式 (Factory Pattern) 应用场景 在我的 QT 项目中曾经有一个需…...
使用SSE解决获取状态不一致问题
使用SSE解决获取状态不一致问题 1. 问题描述2. SSE介绍2.1 SSE 的工作原理2.2 SSE 的事件格式规范2.3 SSE与其他技术对比2.4 SSE 的优缺点 3. 实战代码 1. 问题描述 目前做的一个功能是上传多个文件,这个上传文件是整体功能的一部分,文件在上传的过程中…...
