【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.hqwc.cn/news/324517.html

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

相关文章

​iOS实时查看App运行日志

目录 一、设备连接 二、使用克魔助手查看日志 三、过滤我们自己App的日志 &#x1f4dd; 摘要&#xff1a; 本文介绍了如何在iOS iPhone设备上实时查看输出在console控制台的日志。通过克魔助手工具&#xff0c;我们可以连接手机并方便地筛选我们自己App的日志。 &#x1f4…

数据迁移怎么测,都有哪些步骤?

&#x1f4e2;专注于分享软件测试干货内容&#xff0c;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01;&#x1f4e2;软件测试面试题分享&#xff1a; 1000道软件测试面试题及答案&#x1f4e2;软件测试实战项目分享&#xff1a; 纯接口项目-完…

报错解决:Error creating bean with name ‘userServiceImpl‘

首先&#xff1a;spring整合MyBatis是出现这个错误&#xff1a; Exception in thread "main" org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name userServiceImpl: Unsatisfied dependency expressed through fiel…

QT上位机开发(网络程序界面开发)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 传统的上位机对接方式还是以232、485、can为主&#xff0c;随着网络的发展&#xff0c;越来越多的设备都是以网络进行通信的。毕竟相比较之前&…

对useradd进行简单扩展(shadow项目)

《 移植useradd到嵌入式Linux设备-CSDN博客》该篇文章简单描述了移植useradd命令&#xff08;当然还附带其他相关的命令&#xff09;步骤&#xff0c;十分丝滑地得到了目标文件&#xff0c;拷贝到嵌入式Linux设备后&#xff0c;通过类似下面的命令添加用户和密码到系统&#xf…

Dart调用JS对10000条定位数据滤波

使用Dart调用JS&#xff0c;还是为了练习跨语言调用&#xff1b; 一、编写对应的JS代码 平时在开发时不推荐将算法放在JS里&#xff0c;我这里是简单的做一下数据过滤&#xff1b; 首先生成一些随机定位数据&#xff0c;在实际开发中可以使用真实数据&#xff1b; // 随机定…

自定义标记

章节目录&#xff1a; 一、概述二、使用自定义标记三、注册自定义标记3.1 创建文件3.2 修改文本编码格式 四、执行测试五、结束语 一、概述 pytest 可以支持自定义标记&#xff0c;自定义标记可以把一个 web 项目划分多个模块&#xff0c;然后指定模块名称执行。譬如我可以标明…

创意与技术的结晶:AI魔法绘图与中文描述的完美结合

在人类文明的长河中&#xff0c;创意与技术一直是推动发展的重要动力。随着科技的日新月异&#xff0c;人工智能&#xff08;AI&#xff09;在创意领域的应用逐渐崭露头角&#xff0c;而AI魔法绘图与中文描述的结合&#xff0c;更是将这一趋势推向了新的高度。AI魔法绘图是一种…

一文上手ThreadLocal使用和原理

什么是ThreadLocal?它有什么用&#xff1f; 当我们某个类需要被多线程共享的时候&#xff0c;我们就可以使用ThreadLocal关键字&#xff0c;ThreadLocal可以为每个线程创建这个变量的副本并存到每个线程的存储空间中(关于这个存储空间后文会展开讲述)&#xff0c;从而确保共享…

citeSpace保姆级安装使用教程

citeSpace保姆级安装使用教程 文章目录 citeSpace保姆级安装使用教程CiteSpace功能与参数区安装使用知网数据导出citespace数据导入结果 设置操作隐藏节点 CiteSpace功能与参数区 安装 citeSpace安装教程 citespace下载 网址&#xff1a;https://citespace.podia.com/ 安装之…

leetcode:2784. 检查数组是否是好的(python3解法)

难度&#xff1a;简单 给你一个整数数组 nums &#xff0c;如果它是数组 base[n] 的一个排列&#xff0c;我们称它是个 好 数组。 base[n] [1, 2, ..., n - 1, n, n] &#xff08;换句话说&#xff0c;它是一个长度为 n 1 且包含 1 到 n - 1 恰好各一次&#xff0c;包含 n 两…

【Linux】Linux Page Cache页面缓存的原理

Page cache&#xff08;页面缓存&#xff09;是计算机操作系统中的一种机制&#xff0c;用于将频繁访问的数据从磁盘存储到内存中&#xff0c;以便更快地访问。当程序从磁盘请求数据时&#xff0c;操作系统会检查该数据是否已经存在于页面缓存中。如果存在&#xff0c;数据可以…