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

news2024/9/23 23:15:16

本文介绍了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.coloradmin.cn/o/2126558.html

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

相关文章

【代码随想录训练营第42期 Day56打卡 - 图论Part6 - 并查集2 - 冗余连接问题

目录 一、做题心得 二、题目与题解 题目一:108. 冗余连接 题目链接 题解:并查集 题目二:109. 冗余连接II 题目链接 题解:并查集 三、小结 一、做题心得 冗杂连接问题是图论章节应用并查集的经典问题。所有的顶点通过边相…

Redis 篇- 实战项目中使用 Redis 实现经典功能(异步秒杀商品、点赞功能、共同关注的好友、投喂功能)

🔥博客主页: 【小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍ 文章目录 1.0 使用 Redis 实现异步秒杀 1.1 基于 Lua 脚本判断是否符合条件:库存是否充足、一人一单 1.2 基于 Redis 中的 Stream 实现消息队列 1.3 使用 Java 操作…

Unity Hub自动安装指定版本Unity的Android开发环境

Unity开发Android环境要求SDK、DNK、JDK、Gradle版本都要对才能发布APK,自己去配置很容易出错。Unity Hub可以自动安装指定版本Unity的Android开发环境。 1.安装国内用的UnityHub(我这里用的3.3.2-c6) 2.找到对应的Unity版本 3.点击【从Unit…

docker管理redis集群

1.拉取redis镜像 docker pull redis拉取完成 [rootlocalhost ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE redis latest a617c1c92774 3 years ago 105MB2.运行redis容器 docker run -itd --name redis-test01 -p 6379:6379…

谈谈PCIe VID、DID、SSID、SSVID背后的智慧

PCIe Vendor ID 想了半天还是觉得从“ID是什么”这个问题开始比较好。那么ID是什么?ID就是身份。那身份又是什么?身份就是一个合理存在,用于区分不同个体。为什么叫“合理存在”呢?如果国家不给你发身份证,你就是黑户…

记一次导入dbf文件后数据为空问题的解决方法

前言 省流:这篇文章最终采用的是更换导出文件格式的方法,看到这里觉得方法不适用的小伙伴可以不用浪费几秒钟看完这篇文章哦。 问题描述 作者使用的是Navicat数据库管理工具,然后在将源数据库的数据表导出为dbf格式文件后,再将…

F110批量付款如何Debug BTE增强(后台JOB的调试方法)

F110批量付款如何Debug BTE增强(后台JOB的调试方法) SAP系统中的F110(Automatic Payment)是一个常用的付款程序,在实施过程中,也经常会遇到一些运行的错误,而对于此类的错误,通常的…

基于SpringBoot的租房网站系统

你好呀,我是计算机学姐码农小野!如果有相关需求,可以私信联系我。 开发语言:Java 数据库:MySQL 技术:SpringBoot框架 工具:ECLIPSE 系统展示 首页 管理员功能界面 用户信息界面 预约看房界…

动手学深度学习(pytorch)学习记录28-使用块的网络(VGG)[学习记录]

目录 VGG块VGG网络训练模型 VGG块 定义了一个名为vgg_block的函数来实现一个VGG块 import torch from torch import nn from d2l import torch as d2ldef vgg_block(num_convs, in_channels, out_channels):layers []for _ in range(num_convs):layers.append(nn.Conv2d(in_…

线程池原理及改造

目录 一 线程池执行原理 二 线程池改造(一) 三 线程池改造(二) 一 线程池执行原理 首先我们先了解一下线程池里面几个参数: 第一个是核心线程数,第二个是线程池最大线程数。(线程池里面的线程分为核心线程和非核心线程,既然核心…

人物化身持有者每月奖励:九月版

世界急需英雄。你准备好响应号召了吗? 穿上你的斗篷,戴上你的面具,用你的风格保卫 The Sandbox 的街道吧!本月为人物化身持有者准备的独家奖励是 The Sandbox 超级套装! 本月我们将首次向我们生态系统中的所有人物化…

Vulnhub-RickdiculouslyEasy靶机攻略

御剑扫描到ip 一.第一个flag 主机扫描 目录扫描 二.网页信息收集-第二个flag 9090也开放了web服务所以我们在IP地址后面加端口试试,如下图,加上了端口,并且发现了第二个flag,也对第二个flag进行了简单的探索也没有发现什么可以…

Kubernetes上安装Metallb和Ingress并部署应用程序

视频和代码仓库 视频教程地址:https://www.bilibili.com/video/BV1QV4rebEb8 代码仓库地址:https://github.com/xiaohh-me/kubernetes-yaml 网络规划 之前已经写了几篇安装Kubernetes文章,这次来讲讲在Kubernetes上安装Ingress&#xff0c…

【Linux】Linux介绍及CentOS虚拟机环境搭建

内容大纲介绍 文章目录 内容大纲介绍1.计算机简介2.Linux系统介绍3.虚拟化软件介绍4.Linux环境搭建5.扩展_虚拟机的快照6.Linux的目录介绍 1.计算机简介 概述 全称叫电子计算机, 英文名叫Computer, 俗称叫: 电脑, 简称叫: PC, 就是有硬件和软件组成的电子设备. 组成 计算机硬件…

IO复用-epoll基础

文章目录 IO复用认识epollepoll原理重要结构体 epoll的ET、LTepoll高效的原因epoll需要解决的问题对于使用epoll的建议 IO复用 IO等待拷贝 IO复用是一种通过减少等待时间,来提高IO效率的方式。 其原理是通过同时管理多个IO接口(文件描述符)…

VS2022搭建Linux开发环境

一、VS2022按钮Linux开发组件 双击启动后 选择Linux开发组件 点击修改,开始按钮Linux组件 二、创建新项目 三、远程连接Linux系统 选择工具,点击选项 选择跨平台中的连接管理器,点击添加 配置信息,输入你需要连接到的Linux…

《论面向服务架构设计及其应用》写作框架,软考高级系统架构设计师

论文真题 面向服务架构(Service-Oriented Architecture, SOA) 是一种应用框架,将日常的业务应用划分为单独的业务功能服务和流程,通过采用良好定义的接口和标准协议将这些服务关联起来。通过实施基于SOA的系统架构,用户可以构建、部署和整合服务,无需依赖应用程序及其运…

PyCharm的安装步骤

如何在本机上下载和安装PyCharm,请看以下讲解; 目录 一、下载 二、安装 第 1 步: 第 2 步: 第 3 步: 第 4 步: 第 5 步: 三、配置 第 1 步: 第 2 步: 第 3 步…

基于SpringBoot+Vue+MySQL的实训管理系统

系统展示 用户前台界面 管理员后台界面 系统背景 在当今信息化高速发展的时代,实训管理系统的建设对于提升教育机构的教学效率、优化资源配置、增强师生互动具有重要意义。本系统基于SpringBoot框架构建后端服务,利用其高效、简洁的特点,快速…

U盘文件及文件夹带锁修复

磁盘管理修复工具Disks磁盘管理–针对U盘文件及文件夹带锁修复 本文章只针对统信系统 文章目录 功能概述一、安装工具二、数据备份三、检查文件系统1. 通过启动栏中的“磁盘”或者桌面的“磁盘”启动文件来启动应用:2. 选择U盘设备3. 点击“检查文件系统”按钮(如果无此按钮…