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

2024-01-05 20:52

本文主要是介绍【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

这篇关于【docker】一文讲完docker搭建私有仓库的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/574126

相关文章

一文深入详解Python的secrets模块

《一文深入详解Python的secrets模块》在构建涉及用户身份认证、权限管理、加密通信等系统时,开发者最不能忽视的一个问题就是“安全性”,Python在3.6版本中引入了专门面向安全用途的secr... 目录引言一、背景与动机:为什么需要 secrets 模块?二、secrets 模块的核心功能1. 基

一文详解MySQL如何设置自动备份任务

《一文详解MySQL如何设置自动备份任务》设置自动备份任务可以确保你的数据库定期备份,防止数据丢失,下面我们就来详细介绍一下如何使用Bash脚本和Cron任务在Linux系统上设置MySQL数据库的自... 目录1. 编写备份脚本1.1 创建并编辑备份脚本1.2 给予脚本执行权限2. 设置 Cron 任务2

一文详解如何在idea中快速搭建一个Spring Boot项目

《一文详解如何在idea中快速搭建一个SpringBoot项目》IntelliJIDEA作为Java开发者的‌首选IDE‌,深度集成SpringBoot支持,可一键生成项目骨架、智能配置依赖,这篇文... 目录前言1、创建项目名称2、勾选需要的依赖3、在setting中检查maven4、编写数据源5、开启热

一文全面详解Python变量作用域

《一文全面详解Python变量作用域》变量作用域是Python中非常重要的概念,它决定了在哪里可以访问变量,下面我将用通俗易懂的方式,结合代码示例和图表,带你全面了解Python变量作用域,需要的朋友... 目录一、什么是变量作用域?二、python的四种作用域作用域查找顺序图示三、各作用域详解1. 局部作

安装centos8设置基础软件仓库时出错的解决方案

《安装centos8设置基础软件仓库时出错的解决方案》:本文主要介绍安装centos8设置基础软件仓库时出错的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录安装Centos8设置基础软件仓库时出错版本 8版本 8.2.200android4版本 javas

如何搭建并配置HTTPD文件服务及访问权限控制

《如何搭建并配置HTTPD文件服务及访问权限控制》:本文主要介绍如何搭建并配置HTTPD文件服务及访问权限控制的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、安装HTTPD服务二、HTTPD服务目录结构三、配置修改四、服务启动五、基于用户访问权限控制六、

pytest+allure环境搭建+自动化实践过程

《pytest+allure环境搭建+自动化实践过程》:本文主要介绍pytest+allure环境搭建+自动化实践过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、pytest下载安装1.1、安装pytest1.2、检测是否安装成功二、allure下载安装2.

使用vscode搭建pywebview集成vue项目实践

《使用vscode搭建pywebview集成vue项目实践》:本文主要介绍使用vscode搭建pywebview集成vue项目实践,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录环境准备项目源码下载项目说明调试与生成可执行文件核心代码说明总结本节我们使用pythonpywebv

一文彻底搞懂Java 中的 SPI 是什么

《一文彻底搞懂Java中的SPI是什么》:本文主要介绍Java中的SPI是什么,本篇文章将通过经典题目、实战解析和面试官视角,帮助你从容应对“SPI”相关问题,赢得技术面试的加分项,需要的朋... 目录一、面试主题概述二、高频面试题汇总三、重点题目详解✅ 面试题1:Java 的 SPI 是什么?如何实现一个

Windows Server 2025 搭建NPS-Radius服务器的步骤

《WindowsServer2025搭建NPS-Radius服务器的步骤》本文主要介绍了通过微软的NPS角色实现一个Radius服务器,身份验证和证书使用微软ADCS、ADDS,具有一定的参考价... 目录简介示意图什么是 802.1X?核心作用802.1X的组成角色工作流程简述802.1X常见应用802.