【docker】一文讲完docker搭建私有仓库

一、docker搭建私有仓库方法总结

搭建Docker私有仓库主要有以下几种方式:

  1. 使用Docker官方提供的Registry镜像:Docker官方提供了一个用于构建私有镜像仓库的Registry镜像,只需将镜像下载并运行容器,然后暴露5000端口即可使用。可以通过修改Docker的配置文件daemon.json,在其中添加私有镜像仓库地址来实现。

  2. 在Docker官方网站中直接创建:在Docker的官方网站(https://hub.docker.com/)中,可以创建属于自己的账户,然后在Repository中创建自己的仓库。这种方式比较简单,但需要网络连接,且对于大规模使用可能存在一些限制。

  3. 使用第三方工具Harbor:Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,提供了丰富的功能,如用户管理、镜像复制、访问控制等。此外,它还提供了图形化界面,方便用户进行操作和管理。使用Harbor需要下载并安装,同时需要Docker Compose的支持。

  4. 自行搭建本地仓库:除了使用官方或第三方的工具外,还可以自行搭建本地仓库。这种方式需要一定的技术能力和资源投入,但可以根据实际需求进行定制和优化。自行搭建本地仓库时,可以考虑使用开源的镜像仓库软件,如Nexus Repository等。

需要注意的是,在搭建Docker私有仓库时,需要考虑到安全性、可用性和扩展性等方面的问题。例如,可以添加证书加密功能和用户登录认证来提高安全性;通过负载均衡和容错机制来提高可用性;根据实际需求进行扩展和优化等。

总的来说,选择哪种方式搭建Docker私有仓库取决于具体需求和实际情况。如果只需要简单地存储和管理镜像,可以考虑使用Docker官方提供的Registry镜像或第三方工具Harbor;如果需要更多的定制和优化,可以考虑自行搭建本地仓库或使用其他开源的镜像仓库软件。

二、使用registry搭建私有仓库

使用registry搭搭建Docker私有仓库的步骤如下:

1)拉取私有仓库镜像:使用命令docker pull registry来拉取私有仓库的镜像。私有仓库本身就是一个镜像,通过该命令可以从Docker Hub或其他镜像仓库中获取。

2)启动私有仓库容器:使用命令docker run -d -p 5000:5000 --restart=always --name registry registry来启动私有仓库容器。这将创建一个名为registry的容器,将容器内的5000端口映射到主机的5000端口,并设置为总是重启。

另外,如果你希望将上传的镜像存放到本地的指定路径,可以使用-v参数来指定本地路径,例如:docker run -d -p 5000:5000 -v /opt/data/registry:/var/lib/registry registry

启动成功后,可以使用 docker ps 查看

3)测试私有仓库:在浏览器中输入http://<your-server-ip>:5000/v2/_catalog,将替换为你的服务器IP地址,如果能够正常访问,说明私有仓库搭建成功。

注意:如果你的私有仓库没有使用https,需要在Docker客户端上修改/etc/docker/daemon.json文件(如果文件不存在则新建),添加私有仓库地址到"insecure-registries"列表中,然后重启Docker服务。例如,在daemon.json文件中添加以下内容:

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

然后,使用命令systemctl restart docker重启Docker服务。

当配置了这个选项后,Docker 在与这些指定的镜像仓库通信时,将不再验证 TLS 证书,从而绕过了 Docker 的安全机制。

4)上传镜像到私有仓库:首先,使用docker tag命令将本地镜像标记为私有仓库的镜像,然后使用docker push命令将镜像上传到私有仓库。例如:

docker tag <image-id> <your-server-ip>:5000/<image-name>:<image-version>
docker push <your-server-ip>:5000/<image-name>:<image-version># 例如
docker tag e8f7073d1aa1 192.168.56.102:5000/mynginx:1.0
docker push 192.168.56.102:5000/mynginx:1.0

<image-id>替换为你要上传的镜像的ID,<your-server-ip>替换为你的服务器IP地址,<image-name><image-version>分别替换为镜像的名称和版本号。

5)已上传到私有仓库中的镜像,可以使用docker pull拉取

docker pull <仓库地址>/<镜像名称>:<标签>

以上步骤完成后,你就成功搭建了一个Docker私有仓库,并可以将镜像上传到该仓库中。其他机器可以通过拉取私有仓库中的镜像来使用该镜像。

三、使用Harbor搭建私有仓库

Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,通过添加一些企业必需的功能特性,例如安全、标识和管理等,扩展了开源Docker Distribution。以下是使用Harbor搭建私有仓库的一般步骤:

1、安装Harbor

1) 环境准备:准备一台具有足够磁盘空间的虚拟机或物理机,建议关闭防火墙和SELinux,并确保时间同步服务已配置。

2)安装Docker和Docker Compose:在目标机器上安装Docker和Docker Compose。可以从Docker官网下载并安装Docker,然后使用pip或下载二进制文件来安装Docker Compose。

3)下载并解压Harbor安装包:从Harbor的GitHub仓库下载最新版本的离线安装包。使用wget命令下载,并使用tar命令解压。

wget https://github.com/goharbor/harbor/releases/download/vX.X.X/harbor-offline-installer-vX.X.X.tgz
tar xvf harbor-offline-installer-vX.X.X.tgz

其中,vX.X.X应替换为实际的版本号。

官网地址:https://github.com/goharbor/harbor/releases

例如,安装版本v2.10.0

wget https://github.com/goharbor/harbor/releases/download/v2.10.0/harbor-offline-installer-v2.10.0.tgz
tar xvf harbor-offline-installer-v2.10.0.tgz

4) 配置Harbor:解压后,在目录下会生成一个harbor.yml.tmpl文件(复制harbor.yml.tmpl并重命名为harbor.yml)。修改此harbor.yml以满足你的需求,例如设置hostname、端口、数据库密码等。

  • hostname一定要设置,如果没有域名,先设置为本机ip地址
  • 默认文件配置了https,如果没有请先注释

5) 安装Harbor:在解压的目录下运行./install.sh脚本开始安装。安装过程中会检查环境、配置文件等,并下载所需的Docker镜像。

安装完成后,会出现如下信息

[+] Running 10/10✔ Network harbor_harbor        Created                0.2s ✔ Container harbor-log         Started                0.0s ✔ Container harbor-portal      Started                0.1s ✔ Container registry           Started                0.1s ✔ Container redis              Started                0.1s ✔ Container harbor-db          Started                0.1s ✔ Container registryctl        Started                0.1s ✔ Container harbor-core        Started                0.0s ✔ Container harbor-jobservice  Started                0.0s ✔ Container nginx              Started                0.0s 
✔ ----Harbor has been installed and started successfully.----
[root@localhost harbor]# 

6) 访问Harbor:安装完成后,使用配置的IP地址和端口(或域名)访问Harbor。默认用户名是admin,密码是Harbor12345。登录后可以创建项目、上传和下载镜像等。

例如,在浏览器中输入:http://192.168.56.120/

在这里插入图片描述

在这里插入图片描述

进入默认项目library,点击右上角的推送命令,可以看见各种方式的推送命令

在这里插入图片描述

2、使用 docker 上传镜像到Harbor

1)配置 Docker 客户端

修改 Docker 守护进程的配置,将你的仓库地址添加到不安全注册表的列表中。这可以通过编辑 /etc/docker/daemon.json 文件来实现(如果文件不存在,则创建一个):

{"insecure-registries": ["192.168.56.120"]  
}

然后重启 Docker 守护进程:sudo systemctl restart docker

注意:这里的 192.168.56.120 是你的 Docker 仓库的 IP 地址。如果你使用的是域名,请替换为相应的域名。

2)使用 docker 进行登录和推送

在推送镜像之前要做一次登录

docker login 192.168.56.120 -u admin -p Harbor12345

Docker 客户端会将认证信息存储在 ~/.docker/config.json 文件中(对于 Linux 和 macOS 用户)或 Windows 用户的相应配置位置。只要这个文件中的认证信息没有过期或被手动删除,你就可以继续使用 Docker 客户端与仓库进行交互,而无需重新登录。

然后,先使用docker tag把镜像按照约定格式命名,再使用docker push推送

docker tag 237f00d92168 192.168.56.120/library/mynginx:1.1
docker push 192.168.56.120/library/mynginx:1.1

登录Harbor可以看见镜像已经推送上来了

在这里插入图片描述
3)使用docker pull 拉取镜像

docker pull <仓库地址>/<镜像名称>:<标签>
# 例如
docker pull 192.168.56.120/library/mynginx:1.1

注意:在生产环境中,建议使用HTTPS来保护镜像传输的安全,并考虑备份和恢复策略以防止数据丢失。此外,随着Harbor版本的更新,安装和配置过程可能会有所变化,建议参考官方文档进行操作。

官网地址:https://github.com/goharbor/harbor/releases

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/599918.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Go语言中的HTTP路由处理

在Web开发中&#xff0c;路由处理是至关重要的部分。它决定了当用户访问某个URL时&#xff0c;服务器应该如何响应。Go语言提供了多种库和工具来处理HTTP路由。下面&#xff0c;我们将深入了解如何在Go语言中处理HTTP路由。 Go语言的net/http包本身提供了基本的功能来处理路由…

大数据毕业设计:python房源数据爬虫分析预测系统+可视化 +商品房数据(源码+讲解视频)✅

毕业设计&#xff1a;2023-2024年计算机专业毕业设计选题汇总&#xff08;建议收藏&#xff09; 毕业设计&#xff1a;2023-2024年最新最全计算机专业毕设选题推荐汇总 &#x1f345;感兴趣的可以先收藏起来&#xff0c;点赞、关注不迷路&#xff0c;大家在毕设选题&#xff…

【Spring 篇】Spring:轻松驾驭 Java 世界的利器

在 Java 开发领域&#xff0c;Spring 框架无疑是一颗璀璨的明星&#xff0c;它不仅提供了全面的企业级特性&#xff0c;还为开发者提供了简便而强大的开发方式。本文将深入探讨 Spring 框架的简介、配置和快速入门&#xff0c;带你轻松驾驭 Java 世界的利器。 Spring 简介 Sp…

golang sync.Once实现只执行一次的操作

sync.Once 是 Go 语言标准库中的一个类型&#xff0c;用于实现只执行一次的操作。 sync.Once 类型提供了一个方法 Do&#xff0c;它接受一个函数作为参数&#xff0c;并且确保该函数只会被执行一次&#xff0c;无论 Do 方法被调用多少次。 sync.Once 的工作原理是通过一个布尔…

第一节-网络的基本概念

R&S路由交换 Datacom数通数据通信 某个设备产生了数据之后&#xff0c;借助整体的网络到达目的地的过程 工业标准&#xff1a;通信型的标准&#xff1a;TCP/IP 1.统一化 2.分层管理 3.故障定位比较明确 OSI&#xff1a;七层模型&#xff08;开放式系统互联&#xff…

双指针算法--最长列许不重复子序列

目录 最长列许不重复子序列思路&#xff1a;此题思路;解题代码 原题链接 最长列许不重复子序列 给定一个长度为 n 的整数序列&#xff0c;请找出最长的不包含重复的数的连续区间&#xff0c;输出它的长度。 输入格式 第一行包含整数 n 。 第二行包含 n 个整数&#xff08;均…

YOLOv8改进:IoU系列篇 | Shape-IoU结合基于辅助边框的Inner-IoU损失,实现再次创新

🚀🚀🚀本文改进: Shape-IoU结合基于辅助边框的Inner-IoU损失,小目标检测实现涨点,基于辅助边框的优化前提下,更加关注边界框本身的形状和尺度来计算损失 🚀🚀🚀YOLOv8改进专栏:http://t.csdnimg.cn/hGhVK 学姐带你学习YOLOv8,从入门到创新,轻轻松松搞定科研…

Maven(mvn)的学习下载和配置

文章目录 Maven&#xff08;mvn&#xff09;1.Maven 是什么&#xff1f;2.Maven做什么&#xff1f;2.1传统方式对项目的管理2.2Maven对jar包的管理 3.Maven怎么学3.1Maven如何创建项目3.2Maven的下载与配置3.3Maven的项目结构3.4Maven依赖的引入3.5Maven依赖的剔除3.6Maven依赖…

Python与C++混合编程

概述 Py是解释型语言&#xff0c;编译时不直接翻译成汇编语言而是字节码&#xff0c;在py的虚拟机中运行&#xff0c;在进行数据运算的场下&#xff0c;存在性能瓶颈。C性能卓越&#xff0c;但学习门槛高且开发效率比py低&#xff0c;可用于密集型计算并用Python进行调用。 也…

1050. 鸣人的影分身(dp划分)

题目&#xff1a; 1050. 鸣人的影分身 - AcWing题库 输入样例&#xff1a; 1 7 3输出样例&#xff1a; 8 思路&#xff1a; 代码&#xff1a; #include<iostream> using namespace std; const int N20; int f[N][N]; int main() {int T,m,n;cin>>T;while(T--)…

小红书玩法策略汇总,品牌运营攻略

众所周知&#xff0c;小红书平台凭借其出色的品宣传能力和产品种草能力&#xff0c;而稳坐内容平台C位。那么不论是作为达人&#xff0c;还是品牌方&#xff0c;进驻小红书平台后该如何进行传播&#xff0c;获取流量呢?我们今天和大家分享下小红书玩法策略汇总&#xff0c;品牌…

最长连续序列【哈希】

Problem: 128. 最长连续序列 文章目录 思路解题方法复杂度Code 思路 用set去重并且使用hash查找某个数存在与否 解题方法 遍历每个数&#xff0c;先判断这个数-1是否在hash表里面&#xff0c;如果在则跳过&#xff0c;否则从这个数开始一直枚举&#xff0c;一直到枚举到的数不在…

python练习3【题解///考点列出///错题改正】

一、单选题 1.【单选题】 ——可迭代对象 下列哪个选项是可迭代对象&#xff08; D&#xff09;&#xff1f; A.(1,2,3,4,5) B.[2,3,4,5,6] C.{a:3,b:5} D.以上全部 知识点补充——【可迭代对象】 可迭代对象&#xff08;iterable&#xff09;是指可以通过迭代&#xff…

Calendar日历类型常见方法

Calendar日历类型常见方法&#xff1a; 概括&#xff1a;1.get( )方法2、set( ) 设置时间3、常用的add方法4、after()方法表示的时间是否在指定时间之后&#xff0c; before( ) 方法则之前&#xff0c; 返回判断结果4.1、compareTo比较器 概括&#xff1a; Calendar类是一个抽…

专业课130+,总分390+四川大学951信号与系统考研通信,电子信息经验分享

今年专业课130&#xff0c;总分390&#xff0c;顺利上岸&#xff0c;将近一年复习一路走来&#xff0c;感慨很多&#xff0c;希望以下经历可以给后来的同学提供一些参考。 初试备考经验 公共课&#xff1a;三门公共课&#xff0c;政治&#xff0c;英语&#xff0c;数学。在备…

Visual Studio 2022进行文件差异比较

前言 Visual Studio 2022在版本17.7.4中发布在解决方案资源管理器中比较文件的功能&#xff0c;通过使用此功能&#xff0c;可以轻松地查看两个文件之间的差异&#xff0c;包括添加、删除和修改的代码行。可以逐行查看差异&#xff0c;并根据需要手动调整和编辑文件内容以进行…

Web安全防护

一、Web安全简介 二、Web攻击来源 1、客户端&#xff1a; 2、服务器&#xff1a; 3、通道&#xff1a; 三、Web应用基本组成部分 URL工作过程 HTTP/HTTPS HTTP有两类报文 HTTP请求报头 HTTP协议请求方法 状态码 状态码组成 三、Cookie概述 Cookie和Session的关系 …

阿里云服务器配置选择之公司ERP办公系统配置推荐

公司OA、ERP等办公系统如何选择阿里云服务器配置&#xff1f;可以选择第七代企业级独享型云服务器&#xff0c;ECS通用型g7、计算型c7或内存型r7实例&#xff0c;4核CPU8G内存、8核16G、4核16G等配置&#xff0c;活动 https://t.aliyun.com/U/bLynLC 实例规格使用场景vCPU内存…

Swagger生成接口文档

操作步骤&#xff1a; 1、导入knife4j的maven坐标 2、导入knife4j相关配置类 3、设置静态资源、否则接口文档页面无法访问 4、在LoginCheckFilter中设置不需要处理的请求路径 <dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-…

Python新年烟花代码

Pygame 绘制烟花的基本原理 1&#xff0c;发射阶段&#xff1a;在这一阶段烟花的形状是线性向上&#xff0c;通过设定一组大小不同、颜色不同的点来模拟“向上发射” 的运动运动&#xff0c;运动过程中 5个点被赋予不同大小的加速度&#xff0c;随着时间推移&#xff0c;后面的…