Docker高级管理--Compose容器编排与私有仓库(Docker技术集群与应用)

本文介绍了Docker的三大工具:Docker Machine用于创建和管理Docker主机,Docker Compose用于单引擎模式下的多容器应用部署和管理,而Docker Swarm则是一个集群管理工具,提供微服务应用编排功能。Docker Machine支持在不同环境配置Docker主机,Compose通过yaml文件实现容器编排,Swarm则提供集群管理和应用编排,但相比Kubernetes功能较少。

Docker Machine

简介

Docker Machine 是一种可以让您在虚拟主机上安装 Docker 的工具,并可以使用 docker-machine 命令来管理主机。

Docker Machine 也可以集中管理所有的 docker 主机,比如快速的给 100 台服务器安装上 docker。

Docker Machine 管理的虚拟主机可以是机上的,也可以是云供应商,如阿里云,腾讯云,AWS,或 DigitalOcean。

使用 docker-machine 命令,您可以启动,检查,停止和重新启动托管主机,也可以升级 Docker 客户端和守护程序,以及配置 Docker 客户端与您的主机进行通信。

Swarm 集群管理

简介

Docker Swarm 是 Docker 的集群管理工具。它将 Docker 主机池转变为单个虚拟 Docker 主机。 Docker Swarm 提供了标准的 Docker API,所有任何已经与 Docker 守护程序通信的工具都可以使用 Swarm 轻松地扩展到多个主机。

支持的工具包括但不限于以下各项:

  • Dokku

  • Docker Compose

  • Docker Machine

  • Jenkins

原理

如下图所示,swarm 集群由管理节点(manager)和工作节点(work node)构成。

  • swarm mananger:负责整个集群的管理工作包括集群配置、服务管理等所有跟集群有关的工作。

  • work node:即图中的 available node,主要负责运行相应的服务来执行任务(task)。

Docker Compose 概述

现有 docker 进行项目部署存在的问题

1、为了完成一个完整项目势必用到N多个容器(一个容器只运行一个进程)配合完成项目中业务开发,一旦引入N多个容器,容器之间就会形成某种依赖,也就意味某个容器或某些容器的运行需要其他容器优先启动之后才能正常运行。容器的编排显得至关重要,容器的运行一定要有先后顺序。

2、现在这种方式使用容器,没有办法站在项目的角度将一个项目用到的一组容器划分到一起,日后难点在于项目的多服务器部署。比如项目在当前服务器上运行成功,需要将项目再部署到另一台服务器上,但我们不清楚哪组容器是项目引用的,哪组容器是别的引用的。

Docker Compose 简介

Compose 项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排。从功能上看,跟 OpenStack 中的 Heat 十分类似。

快速编排:站在项目角度将一组相关联容器整合在一起,对这组容器按照指定顺序进行启动。

Compose 在GitHub上的地址:https://github.com/docker/compose

Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。使用 Docker Compose 可以轻松、高效的管理容器。

先检查当前环境中是否有compose;

如果发现没有,将以下包,拉取到指定的位置即可;

然后给这个文件一个执行权;

再次查看就可以了;

然后快速部署本次实验环境所需的镜像;

执行导入脚本即可将该目录下的所有镜像导入到系统中;

检查一下:

写一个简单点的compose文件;

注意文件名和后缀名必须和图中一样;

注意:yaml语言格式及其严格,注意空格,不能多,不能少。

在使用compose的时候,确保在该文件的目录下输入;

查看创建的容器;

因为在创建的时候映射了其容器网站的站点目录;

所以,可以创建一个测试文件进行测试;

查看以compose运行起来的容器的日志;

要注意:查看的是服务的名称,而不是容器的名称;

compose管理的是一个服务,而不是一个容器。

一个服务可以包含多个容器。

注意:输入命令的路径,要和compose文件在同目录下;

webapp-1:即服务中的第一个容器;

登录到容器中;

docker-compose run webapp bash

或者在容器外指定指令到容器内;/ls 等等。

以及查看服务中映射的端口;

如何关闭服务;

如何重启服务;

如何删除服务;

一般情况下就是先关闭,再删除;

也可以使用kill的指令杀死服务;

但只是杀死了,服务还在。还是需要rm的指令进行删除的;

利用compose的方式对容器做副本;

但是在创建副本的时候,注意多个容器是不能共用一个端口的;

所以要修改yaml文件;

不能再手动指定映射的端口了。

加scale的选项,指定副本数;

创建副本的应用场景基本都是做集群的,而访问集群一般都是用代理的方式访问的。因此这时就可以加个反向代理,以反向代理的方式进行访问这个集群,集群间用名称通信即可;

这种方式也加强了内部的安全性,因为外部用户是无法直接访问容器的。

YAML文件主要要求:

1:缩进

2:不能用tab键代替缩进

3:缩进量一般用两个空格

4:key和value,key后要有冒号,冒号后有一个空格

5:属性的具体参数,换行后缩进两个空格,加横杠,横杠后有一个空格

6:#号可以注释

7:在写value的时候,如果包含特殊的字符,这个value要引号引起来

8:value的数据类型(布尔型),要使用引号

再做一个针对nginx的服务;

然后将文件中指定的路径创建出来,把文件放入到该目录下;

然后查看该配置文件中的参数与编排文件中指定的是否有出入;

最后再把末尾的daemon off语句删除掉即可,只要保证容器在运行的时候有程序在前台运行即可;

在编排文件的目录下创建容器:

但是此时发现,并没有该容器运行起来;

检查nginx。conf的配置文件;

将php的参数改为本地回环地址即可,因为这个配置文件是用于搭建lnmp容器架构时用到的;

这样就运行了起来;

再打开一个服务器,拉取本次实验所需的软件包;

注意版本;新版本功能更多;

Harbor 介绍

Harbor 是由 VMware 开源的一款云原生制品仓库,Harbor 的核心功能是存储和管理 Artifact。Harbor 允许用户用命令行工具对容器镜像及其他 Artifact 进行推送和拉取,并提供了图形管理界面帮助用户查看和管理这些 Artifact。在 Harbor 2.0 版本中,除容器镜像外,Harbor 对符合 OCI 规范的 Helm Chart、CNAB、OPA Bundle 等都提供了更多的支持。

如上图所示是 Harbor 2.0 的架构图,从上到下可分为代理层、功能层和数据层。

  • 代理层:代理层实质上是一个 Nginx 反向代理,负责接收不同类型的客户端请求,包括浏览器、用户脚本、Docker 等,并根据请求类型和 URI 转发给不同的后端服务进行处理。

  • 功能层:

    • Portal:是一个基于 Argular 的前端应用,提供 Harbor 用户访问的界面。

    • Core:是 Harbor 中的核心组件,封装了 Harbor 绝大部分的业务逻辑。

    • JobService:异步任务组件,负责 Harbor 中很多比较耗时的功能,比如 Artifact 复制、扫描、垃圾回收等。

    • Docker Distribution:Harbor 通过 Distribution 实现 Artifact 的读写和存取等功能。

    • RegistryCtl:Docker Distribution 的控制组件。

    • Notary(可选):基于 TUF 提供镜像签名管理的功能。

    • 扫描工具(可选):镜像的漏洞检测工具

    • ChartMuseum(可选):提供 API 管理非 OCI 规范的 Helm Chart,随着兼容 OCI 规范的 Helm Chart 在社区上被更广泛地接受,Helm Chart 能以 Artifact 的形式在 Harbor 中存储和管理,不再依赖 ChartMuseum,因此 Harbor 可能会在后续版本中移除对 ChartMuseum 的支持。

  • 数据层:

    • Redis:主要作为缓存服务存储一些生命周期较短的数据,同时对于 JobService 还提供了类似队列的功能。

    • PostgreSQL:存储 Harbor 的应用数据,比如项目信息、用户与项目的关系、管理策略、配置信息、Artifact 的元数据等等。

    • Artifact 存储:存储 Artifact 本身的内容,也就是每次推送镜像、Helm Chart 或其他 Artifact 时,数据最终存储的地方。默认情况下,Harbor 会把 Artifact 写入本地文件系统中。用户也可以修改配置,将 Artifact 存储在外部存储中,例如亚马逊的对象存储 S3、谷歌云存储 GCS、阿里云的对象存储 OSS 等等。

先解压:

然后cd到解压目录;

将它提供的模版配置文件拷贝并且重命名成可以使用的配置文件;

然后将harbor相关的镜像tar包进行解压;类似于之前提供的images文件夹;

然后打开harbor的配置文件;

修改成本机的IP地址;

然后将https相关的语句注释掉;

因为没有证书,所以不能提供https的服务;

端口;

证书文件;

私钥;

以及harbor提供的web管理界面的密码的显示;已经数据库的密码,由于harbor存储的镜像要放在数据库中;

(查看即可,不用修改;)

执行一下安装脚本;

然后查看容器;

还可以查看导入进来的镜像;

然后访问harbor提供的web管理界面;

直接访问该服务器的IP即可;

然后添加一个项目;

做到这里可以给该服务器做个快照;

然后创建用户;

还可以将该用户设置成管理员;

但是如果项目设置为不公开,可以在项目中为该项目添加成员且设置相应的角色;

排名越高,权限越高,按需设置;

然后再打开一个服务器充当客户端的角色,或者直接在101上进行也可以;

查看本机的镜像,尝试上传;

但是这些镜像不能直接上传至harbor,harbor对镜像也是有要求的;

例:

私有仓库主机IP/项目/镜像名称:tag(标签)

首先要对镜像进行改名称;

再次查看镜像的名称;

然后查看是否指定了私有仓库的信息;

如果不指定,就不能使用自己搭建的私有仓库对镜像进行上传或下载等操作;

然后在客户端尝试登录;

尝试上传镜像;

然后再登录到web界面,查看是否上传成功;

如何拉取镜像呢???

首先进入到私有仓库中,选择要拉取的镜像,粘贴拉取命令;

直接复制到命令行执行即可;

但是这种方式没有指定改镜像的标签,可以在拉取镜像的时候指定标签,即可;

如果感觉镜像的名称太长不好用,再使用tag的命令修改即可;

登出私有仓库:

docker logout 192.168.10.102

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

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

相关文章

技术成神之路:设计模式(十三)访问者模式

介绍 访问者模式(Visitor Pattern)是一种行为型设计模式,它允许你在不改变对象结构的前提下,定义作用于这些对象的新操作。这种模式通过将操作逻辑从对象结构中抽离出来,使得新的操作可以无缝地添加到现有对象中。 1.定…

PDF转Excel小达人养成记

在现代职场,数据管理与格式转换可谓是日常任务的重头戏;有时我们手头有一份PDF文件,但需要将其中的数据整理成Excel表格,这该如何是好?别急,今天我就来给大家介绍几款好用的PDF转Excel工具,以及…

【CanMV K230 AI视觉】 人体关键点检测

【CanMV K230 AI视觉】 人体关键点检测 人体关键点检测 动态测试效果可以去下面网站自己看。 B站视频链接:已做成合集 抖音链接:已做成合集 人体关键点检测 人体关键点检测是指标注出人体关节等关键信息,分析人体姿态、运动轨迹、动作角度等…

【python】OpenCV—Age and Gender Classification

文章目录 1、任务描述2、网络结构2.1 人脸检测2.2 性别分类2.3 年龄分类 3、代码实现4、结果展示5、参考 1、任务描述 性别分类和年龄分类预测 2、网络结构 2.1 人脸检测 输出最高的 200 个 RoI,每个 RoI 7 个值,(xx,xx&#x…

chapter14-集合——(List-HashSet)——day18

目录 519-HashSet全面说明 520-数组链表模拟 521-HashSet扩容机制 重要 522-HashSet源码解读1 526-HashSet最佳实践 527-hashSet思考题 519-HashSet全面说明 题一、 两个tom都可以添加成功是因为这是两个对象 看源码做分析:不是直接指向常量池的吗?…

【Python篇】matplotlib超详细教程-由入门到精通(下篇)

文章目录 前言第六部分:保存与导出图表6.1 保存为图片文件示例:保存图表为 PNG 文件解释:关键点: 6.2 保存为高分辨率图片示例:保存为高分辨率图片解释: 6.3 保存为不同文件格式示例:保存为不同…

程序员问题社区

CSDN有问必答 – 程序员问题社区 ★★★★★ 点击我进入程序员问题社区 ★★★★★

OrionX GPU算力池助力AI OCR场景应用

01 AI OCR的历史及概念 OCR(Optical Character Recognition,光学字符识别)是指采用光学的方式将纸质文档中的文字转换成为黑白点阵的图像文件,通过检测暗、亮的模式确定其形状,然后用字符识别方法将形状翻译成计算机文…

ARM 工业计算机搭载 FUXA 组态软件:开启智能制造新时代

工业自动化已经成为提高生产效率、保证产品质量以及提升企业竞争力的关键因素。而在工业自动化的舞台上,FUXA 组态软件与 ARM 工业计算机的组合正发挥着越来越重要的作用,以其高效稳定、数据可视化、实时监控等优势,在复杂场景应用中展现出卓…

JavaScript第五天(函数,this,严格模式,高阶函数,闭包,递归,正则,ES6)高级

这里写目录标题 JavaScript高级第03天1.函数的定义和调用1.1函数的定义方式1.2函数的调用 2.this2.1函数内部的this指向2.2改变函数内部 this 指向2.2.1 call方法2.2.2 apply方法2.2.3 bind方法2.2.4 call、apply、bind三者的异同 3.严格模式3.1什么是严格模式3.2开启严格模式3…

opencv图像透视处理

引言 在图像处理与计算机视觉领域,透视变换(Perspective Transformation)是一种重要的图像校正技术,它允许我们根据图像中已知的四个点(通常是矩形的四个角)和目标位置的四个点,将图像从一个视…

【鸿蒙开发从0到1 day09】

鸿蒙开发基础-ArkUI基本布局 一 .设计资源-图标库1.阿里矢量图图标库2.HarmonyOS图标库 二.布局属性1.内边距2.外边距3.边框线4.边框圆角 三.背景属性1.背景颜色2.背景图片(1)背景图的缩放(2)背景图的显示位置 四.颜色渐变1.线性渐变2.径向渐变 五.阴影六.可选择链操作符(?)七…

如何更改磁盘卷标名称?

磁盘卷标(Volume Label)是用来标识和管理磁盘驱动器的名称,通常在文件资源管理器中显示。卷标有助于用户快速识别和区分不同的磁盘或分区。 为什么要更改磁盘卷标名称? 磁盘卷标作为磁盘的名字,可以帮助用户更容易地识…

通过C# 裁剪PDF页面

在处理PDF文档时,有时需要精确地裁剪页面以适应特定需求,比如去除广告、背景信息或者仅仅是为了简化文档内容。 本文将指导如何使用免费.NET控件通过C#实现裁剪PDF页面。 免费库 Free Spire.PDF for .NET 支持在 .NET (C#, VB.NET, ASP.NET, .NET Core)…

【特点】浅谈大模型的特点

在人工智能(AI)的发展历程中,大模型无疑是一个重要的里程碑。大模型是指利用海量数据,通过先进的算法和技术,训练得到的具有强大预测和决策能力的模型,这类模型具备了强大的语言理解和生成能力,能够完成各种复杂的自然…

搬运5款冷门但值得下载的PC软件

​ 分享5款冷门但值得下载的Windows软件,个个都很实用,你可能一个都没见过,但是我觉得你用过之后可能就再也离不开了。 1. 图片管理——Picasa ​ Picasa 是一款由谷歌开发的图片管理和编辑软件,能够帮助用户轻松地组织、编辑和…

电子邮件加密软件哪个好用?分享这五款加密工具,防范邮件泄密!2024企业必备!

"密语藏锋刃,安全重于山。" 在数字洪流中,电子邮件是企业沟通的重要桥梁,其安全性不容忽视。 因此,选择一款高效可靠的电子邮件加密软件,是企业保障信息安全的关键。 本文将为您推荐五款2024年企业必备的电…

基于SpringBoot+Vue+MySQL的垃圾分类回收管理系统

系统展示 用户前台界面 管理员后台界面 系统背景 二十一世纪互联网的出现,改变了几千年以来人们的生活,不仅仅是生活物资的丰富,还有精神层次的丰富。在互联网诞生之前,地域位置往往是人们思想上不可跨域的鸿沟,信息的…

Uniapp + Vite + Vue3 + uView + Pinia 实现自定义底部 Tabbar(最新保姆级教程)

Uniapp Vite Vue3 uView Pinia 实现自定义底部 Tabbar(最新保姆级教程) 1、效果展示2、环境准备2.1 新建 uniapp 项目2.2. 安装 uView2.3 安装 pinia 3. 配置环境4. 创建目录结构5、编写 pages.json 页面路由6、编写 tabbar.js 状态数据7、编写 tabb…

软件测试之压力测试

🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 压力测试 压力测试是一种软件测试,用于验证软件应用程序的稳定性和可靠性。压力测试的目标是在极其沉重的负载条件下测量软件的健壮性和错误处理能力&…