【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 大…...
Android Wi-Fi 连接失败日志分析
1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分: 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析: CTR…...

Unity3D中Gfx.WaitForPresent优化方案
前言 在Unity中,Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染(即CPU被阻塞),这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案: 对惹,这里有一个游戏开发交流小组&…...

高频面试之3Zookeeper
高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个?3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制(过半机制࿰…...
Golang dig框架与GraphQL的完美结合
将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用,可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器,能够帮助开发者更好地管理复杂的依赖关系,而 GraphQL 则是一种用于 API 的查询语言,能够提…...
sqlserver 根据指定字符 解析拼接字符串
DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...

论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)
笔记整理:刘治强,浙江大学硕士生,研究方向为知识图谱表示学习,大语言模型 论文链接:http://arxiv.org/abs/2407.16127 发表会议:ISWC 2024 1. 动机 传统的知识图谱补全(KGC)模型通过…...
css的定位(position)详解:相对定位 绝对定位 固定定位
在 CSS 中,元素的定位通过 position 属性控制,共有 5 种定位模式:static(静态定位)、relative(相对定位)、absolute(绝对定位)、fixed(固定定位)和…...
在鸿蒙HarmonyOS 5中使用DevEco Studio实现录音机应用
1. 项目配置与权限设置 1.1 配置module.json5 {"module": {"requestPermissions": [{"name": "ohos.permission.MICROPHONE","reason": "录音需要麦克风权限"},{"name": "ohos.permission.WRITE…...

selenium学习实战【Python爬虫】
selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...
是否存在路径(FIFOBB算法)
题目描述 一个具有 n 个顶点e条边的无向图,该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序,确定是否存在从顶点 source到顶点 destination的路径。 输入 第一行两个整数,分别表示n 和 e 的值(1…...