【Docker】Docker学习⑧ - Docker仓库之分布式Harbor

【Docker】Docker学习⑧ - Docker仓库之分布式Harbor

  • 一、Docker简介
  • 二、Docker安装及基础命令介绍
  • 三、Docker镜像管理
  • 四、Docker镜像与制作
  • 五、Docker数据管理
  • 六、网络部分
  • 七、Docker仓库之单机Dokcer Registry
  • 八、 Docker仓库之分布式Harbor
    • 1 Harbor功能官方介绍
    • 2 安装Harbor
    • 3 配置Harbor
      • 3.1 解压并编辑harbor.cfg
      • 3.2 更新harbor配置
      • 3.3 官方方式启动Harbor
    • 4 配置docker使用harbor仓库上传下载镜像
      • 4.1 编辑docker配置文件
      • 4.2 重启docker服务
      • 4.3 验证能否登录harbor
      • 4.4 测试上传和下载镜像
      • 4.5 验证从harbor服务器下载镜像并启动容器
    • 5 实现harbor高可用
    • 6 实现harbor双向同步
    • 7 harbor https配置
  • 九、单机编排之Docker Compose

一、Docker简介

  • 参考:【Docker】Dokcer学习① - 简介

二、Docker安装及基础命令介绍

  • 参考:【Docker】Docker学习② - Docker安装及基础命令介绍

三、Docker镜像管理

  • 参考:【Docker】Docker学习③ - Docker镜像管理

四、Docker镜像与制作

  • 参考:【Docker】Docker学习④ - Docker镜像与制作

五、Docker数据管理

  • 参考:【Docker】Docker学习⑤ - Docker数据管理

六、网络部分

  • 参考:【Docker】Docker学习⑥ - 网络部分

七、Docker仓库之单机Dokcer Registry

  • 参考:【Docker】Docker学习⑦ - Docker仓库之单机Dokcer Registry

八、 Docker仓库之分布式Harbor

Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,由vmware开源,其通过添加一些企业必需的功能特性,例如:安全、标识和管理等,扩展了开源Docker Distribution。

  • 作为一个企业级私有Registry服务器,Harbor提供了更好的性能和安全。提升用户使用Registry构建和运行环境传输镜像的效率。

  • Harbor支持安装再多个Registry节点的镜像资源复制,镜像全部保存在私有Registry中,确保数据和知识产权在公司内部网络中管控。

  • 另外,Harbor也提供了高级的安全特性,诸如用户管理,访问控制和活动审计等。

    官网地址: https://vmware.github.io/harbor/cn/
    官方github地址:https://github.com/vmware/harbor/

1 Harbor功能官方介绍

  • 基于角色的访问控制:用户与Docker镜像仓库通过“项目”进行组织管理,一个用户可以对多个镜像仓库在同一命名空间(project)里由不同的权限。
  • 镜像复制:镜像可以在多个Registry实例中复制(同步)。尤其适合于负载均衡,高可用,混合云和多云的场景。
  • 图形化用户界面:用户可以通过浏览器来浏览,检索当前Docker镜像仓库,管理项目和命名空间。
  • AD/LDAQ支:Harbor可以集成企业内部已有的AD/LDAP,用于鉴权认证管理。
  • 审计管理:所有针对镜像仓库的操作都可以被记录追溯,用于审计管理。
  • 国际化:已拥有英文、中文、德文、日文和俄文的本地化版本。更多的语言将会添加进来。
  • RESTful API - RESTful API:提供给管理员对于Harbor更多的操控,使得与其他管理软件集成变得更容易。
  • 部署简单:提供在线和离线两种安装工具,也可以安装到vSphere平台(OVA方式)虚拟设备。

2 安装Harbor

下载地址:https://github.com/vmware/harbor/releases
安装文档:https://github.com/vmware/harbor/blob/master/docs/installation_guide.md

  • 2.1 服务器1安装docker
  • 2.2 服务器2安装docker
  • 2.3 下载Harbor安装包
    推荐离线完整安装包:
	cd /usr/local/src/wget https://github.com/vmware/harbor/releases/download/v1.2.2/harbor-offline-installer-v1.2.2.tgz在线安装包:wget https://github.com/vmware/harbor/releases/download/v1.2.2/harbor-online-installer-v1.2.2.tgz

3 配置Harbor

3.1 解压并编辑harbor.cfg

	tar xvf harbor-offline-installer-v1.2.2.tgzln -sv /usr/local/src/harbor /usr/local/cd /usr/local/harborgrep "^[a-Z]" harbor.cfg

3.2 更新harbor配置

  • 3.2.1 首次部署harbor更新
	cd /usr/local/harbor./prepare  #更新配置执行完后会在当前目录生成一个docker-compose.yml文件,用于配置数据目录等配置信息。
  • 3.2.2 后期修改配置
    如果harbor运行一段时间之后需要更改配置,则步骤如下:
    停止harbor:
	cd /usr/local/harbor docker-compose stopvim harbor.cfg./preparedocker-compose start

3.3 官方方式启动Harbor

  • 3.3.1 官方方式安装并启动harbor
	yum install python-pippip install --upgrade pippip install docker-compose./install.sh #官方构建harbor和启动方式,推荐此方法,会下载官方的docker镜像

4 配置docker使用harbor仓库上传下载镜像

4.1 编辑docker配置文件

如果配置的是https的话,本地docker就不需要有任何操作就可以访问harbor了

	vim /etc/sysconfig/dockerOPTIONS='--selinux-enabled --log-driver=journald --insecure-registry 192.168.56.199'

❗↑可能是版本不对,无效
❗↓可行

	[root@gbase8c_private harbor]# cat /etc/docker/daemon.json{"insecure-registries":["192.168.56.199"],"registry-mirrors":["https://pkjijpqo.mirror.aliyuncs.com"]}#其中192.168.56.199是我们部署harbor的地址,即hostname配置项值,配置完后需要重启docker服务

4.2 重启docker服务

4.3 验证能否登录harbor

docker login 192.168.56.199
日志:

	[root@gbase8c_private harbor]# docker login 192.168.56.199Username: adminPassword: Login Succeeded

4.4 测试上传和下载镜像

  • 4.4.1 导入镜像
	docker load < /opt/nginx-1.10.3_docker.tar.gz
  • 4.4.2 验证镜像导入成功

  • 4.4.3 镜像打tag
    修改images的名称,不修改成指定格式无法将镜像上传到harbor仓库,格式为:harborIP/项目名/image 名字:版本号

	docker tag 192.168.56.199:5000/jack/nginx_1.10.3:v1 192.168.56.199/nginx/nginx_1.10.3:v1docker images

日志:

	[root@gbase8c_private harbor]# docker imagesREPOSITORY                  TAG                 IMAGE ID            CREATED             SIZEnginx                       latest              605c77e624dd        23 months ago       141MB[root@gbase8c_private harbor]# docker tag nginx:latest 192.168.56.199/nginx/nginx:v1[root@gbase8c_private harbor]# docker imagesREPOSITORY                  TAG                 IMAGE ID            CREATED             SIZEnginx                        latest              605c77e624dd        23 months ago       141MB192.168.56.199/nginx/nginx   v1                  605c77e624dd        23 months ago       141MB
  • 4.4.4 在harbor管理界面创建项目

  • 4.4.5 将镜像push到harbor
    格式为:docker push 镜像名:版本

	docker push 192.168.56.199/nginx/nginx_1.10.3:v1

日志:

	[root@gbase8c_private harbor]# docker push 192.168.56.199/nginx/nginx:v1The push refers to repository [192.168.56.199/nginx/nginx]d874fd2bc83b: Pushed 32ce5f6a5106: Pushed f1db227348d0: Pushed b8d6e692a25e: Pushed e379e8aedd4d: Pushed 2edcec3590a4: Pushed v1: digest: sha256:ee89b00528ff4f02f2405e4ee221743ebc3f8e8dd0bfd5c4c20a2fa2aaa7ede3 size: 1570
  • 4.4.6 harbor界面验证镜像上传成功

  • 4.4.7 验证镜像信息

4.5 验证从harbor服务器下载镜像并启动容器

  • 4.5.1 更改docker配置文件
    目前凡是需要从harbor镜像服务器下载image的docker服务都需要更改,不更改的话无法下载
	vim /etc/sysconfig/docker4 OPTIONS='--selinux-enabled --log-driver=journald --insecure-registry 192.168.56.199'
  • 4.5.2 重启docker服务
  • 4.5.3 验证从harbor下载镜像
  • 4.5.3.1 查看下载命令
    harbor上的每个镜像里面自带pull 命令
  • 4.5.3.2 执行下载
	docker pull

日志:

	[root@gbase8c_1 ~]# docker pull 192.168.56.199/nginx/nginx:v1v1: Pulling from nginx/nginxa2abf6c4d29d: Pull complete a9edb18cadd1: Pull complete 589b7251471a: Pull complete 186b1aaa4aa6: Pull complete b4df32aa5a72: Pull complete a0bcbecc962e: Pull complete Digest: sha256:ee89b00528ff4f02f2405e4ee221743ebc3f8e8dd0bfd5c4c20a2fa2aaa7ede3Status: Downloaded newer image for 192.168.56.199/nginx/nginx:v1192.168.56.199/nginx/nginx:v1[root@gbase8c_1 ~]# docker imagesREPOSITORY                   TAG       IMAGE ID       CREATED         SIZE192.168.56.199/nginx/nginx   v1        605c77e624dd   23 months ago   141MB
  • 4.5.3.3 验证镜像下载完成
  • 4.5.3.4 启动容器
	docker run -d -p 80:80 -p 443:443 
  • 4.5.3.5 验证端口
	[root@gbase8c_1 ~]# docker run -d -p 80:80 -p 443:443 192.168.56.199/nginx/nginx:v1fd35d375abede25eb4ce538b353218ea5b3041ad2c046ce8f75ddef05d182ae5[root@gbase8c_1 ~]# ss -tnlState      Recv-Q Send-Q  Local Address:Port Peer Address:Port              LISTEN     0      128              [::]:443          [::]:*                  LISTEN     0      128              [::]:80           [::]:*  

5 实现harbor高可用

Harbor支持基于策略的Docker镜像复制功能,这类似于MySQL的主从同步,其可以实现不同的数据中心、不同的运行环境之间同步镜像,并提供友好的管理界面,大大简化了实际运维中的镜像管理工作。
已经有很多互联网公司使用harbor搭建内网docker仓库的案例,并且还有实现了双向复制的案例,本文将实现单项复制的部署。

  • 5.1 新部署一台harbor服务器
  • 5.2 验证登录
  • 5.3 创建一个nginx项目
    与主harbor项目名称保持一致
  • 5.4 在主harbor服务器配置同步测试
  • 5.5 点击复制规则
  • 5.6 主harbor查看镜像同步状态
  • 5.6 从harbor查看镜像
  • 5.7 测试从harbor镜像下载和容器启动

6 实现harbor双向同步

在从harbor也配置同步规则

7 harbor https配置

	openssl genrsa -out /usr/local/src/harbor/certs/harbor-ca.key 2048openssl req -x509 -new -nodes -key /usr/local/src/harbor/certs/harbor-ca.key -subj "/CN=harbor.magedu.net" -days 7120 -out /usr/local/src/harbor/certs/harbor-ca.crt

日志:

	[root@gbase8c_1 harbor]# openssl genrsa -out /usr/local/src/harbor/certs/harbor-ca.key 2048Generating RSA private key, 2048 bit long modulus...................................................+++.................................................+++e is 65537 (0x10001)[root@gbase8c_1 certs]# openssl req -x509 -new -nodes -key /usr/local/src/harbor/certs/harbor-ca.key -subj "/CN=harbor.magedu.net" -days 7120 -out /usr/local/src/harbor/certs/harbor-ca.crt

九、单机编排之Docker Compose

  • 参考:【Docker】Docker学习⑨ - 单机编排之Docker Compose

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

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

相关文章

OpenCV 1 - 加载 显示 修改 保存图像

1 加载图像(cv::imread) imread功能是加载图像文件成为一个Mat对象 第一个参数,表示图像文件名称第二个参数,表示加载的图像是什么类型&#xff0c;支持常见的三个参数值 参数注释IMREAD_UNCHANGED表示加载原图,不做任何改变IMREAD_GRAYSCALE表示把原图作为灰度图像加载进来IM…

Linux——常用命令

1、命令的基本格式 对服务器来讲&#xff0c;图形界面会占用更多的系统资源&#xff0c;而且会安装更多的服务、开放更多的端口&#xff0c;这对服务器的稳定性和安全性都有负面影响。其实&#xff0c;服务器是一个连显示器都没有的家伙&#xff0c;要图形界面干什么&#xff…

力扣hot100 字符串解码 栈 辅助栈

Problem: 394. 字符串解码 文章目录 思路&#x1f496; 辅助栈 思路 &#x1f468;‍&#x1f3eb; 路飞 &#x1f496; 辅助栈 ⏰ 时间复杂度: O ( n ) O(n) O(n) &#x1f30e; 空间复杂度: O ( n ) O(n) O(n) class Solution {public String decodeString(String s…

MCU启动文件小解一下

GD32启动文件分析 启动文件的一些指令.s启动文件分析栈空间分配堆空间管理中断向量表定义堆空间定义Reset_Handler复位程序HardFault_Handler_main文件分析用户堆栈初始化 GD32启动文件主要做了以下工作&#xff1a; 初始化SP_initial_sp , PCReset_Handler指针&#xff0c;设置…

C#,计算几何,随机点集之三角剖分的德劳内(Delaunay)算法的源代码

一、三角剖分Delaunay算法简介 点集的三角剖分&#xff08;Triangulation&#xff09;&#xff0c;对数值分析&#xff08;比如有限元分析&#xff09;以及图形学来说&#xff0c;都是极为重要的一项预处理技术。尤其是Delaunay三角剖分&#xff0c;由于其独特性&#xff0c;关…

day04 两两交换链表中的节点、删除链表倒数第N个节点、链表相交、环形链表II

题目链接&#xff1a;leetcode24-两两交换链表中的节点, leetcode19-删除链表倒数第N个节点, leetcode160-链表相交, leetcode142-环形链表II 两两交换链表中的节点 基础题没有什么技巧 解题思路见代码注释 时间复杂度: O(n) 空间复杂度: O(1) Go func swapPairs(head *Li…

thinphp 调用 \think\Log::write 写入回调日志信息

//接口回调地址 public function back_content(){\think\Log::record(进来了, info); $data file_get_contents(php://input);$ret json_decode($data,true); \think\Log::write(调用第一张图片返回结果.$data,log,true); } Think\Log::record(测试日志信息&#xff0c;这是…

Spark面试全攻略:深入理解与高效准备指南

目录 基础问题 进阶问题 高阶问题 相关资料 基础问题<

class_19:抽象类(纯虚函数不能被实例化)

#include <iostream>using namespace std;class Teacher{ public:string name;string school;virtual void goinclass() 0;//纯虚函数不能被实例化 抽象类virtual void startclass() 0;//纯虚函数不能被实例化virtual void afterclass() 0;//纯虚函数不能被实例化 };…

Android App开发-简单控件(4)——按钮触控和图像显示

3.4 按钮触控 本节介绍了按钮控件的常见用法&#xff0c;包括&#xff1a;如何设置大小写属性与点击属性&#xff0c;如何响应按钮的点击事件和长按事件&#xff0c;如何禁用按钮又该如何启用按钮&#xff0c;等等。 3.4.1 按钮控件Button 除了文本视图之外&#xff0c;按钮…

优化无人机调试中的开源软件

优化无人机调试中的开源软件&#xff0c;可以从以下几个方面入手&#xff1a; 代码优化&#xff1a;检查软件的代码&#xff0c;查看是否存在冗余、低效的代码&#xff0c;或者是否有优化的空间。例如&#xff0c;优化算法、减少不必要的计算等。硬件资源优化&#xff1a;在无…

IMXULL驱动学习——通过总线设备驱动模型点亮野火开发板小灯【参考韦东山老师教程】

参考&#xff1a;【IMX6ULL驱动开发学习】11.驱动设计之面向对象_分层思想&#xff08;学习设备树过渡部分&#xff09;-CSDN博客 韦东山课程&#xff1a;LED模板驱动程序的改造_总线设备驱动模型 我使用的开发板&#xff1a;野火imx6ull pro 欢迎大家一起讨论学习 实现了总线设…

【探索科技 感知未来】文心一言大模型

【探索科技 感知未来】文心大模型 &#x1f6a9;本文介绍 文心一言大模型是由中国科技巨头百度公司研发的一款大规模语言模型&#xff0c;其基于先进的深度学习技术和海量数据训练而成。这款大模型具备强大的自然语言处理能力&#xff0c;可以理解并生成自然语言&#xff0c;为…

leetcode hot100岛屿数量

本题中要求统计岛屿数量&#xff08;数字1的上下左右均为1&#xff0c;则是连续的1&#xff0c;称为一块岛屿&#xff09;。那么这种类型题都是需要依靠深度优先搜索&#xff08;DFS&#xff09;或者广度优先搜索&#xff08;BFS&#xff09;来做的。这两种搜索&#xff0c;实际…

蓝牙----蓝牙GAP层

蓝牙协议栈----GAP GAP的角色连接过程连接参数 GAP&#xff1a;通用访问配置协议层 gap的角色发现的模式与过程连接模式与过程安全模式与过程 CC2640R2F的GAP层抽象 GAP的角色 Broadcaster 广播电台 -不可连接的广播者。Observer 观察者 -扫描广播者但无法启动连接。Periphe…

降低文件增长和失真的零系数JPEG图像可逆信息隐藏

一、研究概述和意义 随着多媒体技术和网络的迅猛发展&#xff0c;数字媒体的应用越来越广泛。在网络上传输的数字 媒体如音频、文本、视频和图像的内容及数据安全问题也随之而来。伴随着计算机技术发展与普及&#xff0c;数字媒体的机密性、完整性经常受到非法活动的威胁&…

vue中的computed

目录 一&#xff1a;介绍 二&#xff1a;例子演示 一&#xff1a;介绍 在 Vue.js 中&#xff0c;computed 属性是一种特殊类型的属性&#xff0c;它允许你声明依赖于其他数据属性的值。computed 属性的值是通过一个函数计算得出的&#xff0c;这个函数可以在其依赖的数据发生…

【MongoDB】mongodb安装及启动踩坑点

mongodb的安装&#xff0c;基本上参考文章[1]。 但是在过程中&#xff0c;有一些踩坑点。 1&#xff0c;高版本mongodb不自带mongo脚本 在文章1中&#xff0c;作者在解压后&#xff0c;直接使用了mongo脚本&#xff0c;而我下载的mongodb版本要更高&#xff0c;在解压后&…

深入理解stressapptest

文章目录 一、概述二、安装2.1、源码编译安装2.2、命令行安装2.3、安装确认三、重要参数详解3.1、查询支持的参数3.2、参数说明 四、实例4.1、随机测试&#xff08;默认模式&#xff09;4.2、循环测试4.2、全内存测试 团队博客: 汽车电子社区 一、概述 stressapptest是一款免费…

C++重新入门-内联函数

C中的内联函数是一种优化手段&#xff0c;用于减少函数调用的开销。内联函数的主要特点是在调用处将函数体的代码直接插入&#xff0c;而不是通过函数调用的方式执行。这样可以避免函数调用的开销&#xff0c;但也有一些限制和注意事项。 1.内联函数的定义 在函数定义前面加上…