ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

容器技术基础(20210728笔记)

2021-07-28 15:29:35  阅读:139  来源: 互联网

标签:SOA 容器 架构 20210728 笔记 镜像 Docker docker


容器技术基础(20210728笔记)

容器技术基础

容器概述

容器的诞生

软件架构的演进历程
在这里插入图片描述

单体式架构

【不考虑架构】

传统的项目会包含很多功能,是一个大而全的“超级”工程。
在这里插入图片描述

传统的单体应用无法适应快速增长的业务需求

单体应用的系统比较膨胀与臃肿,导致进行可持续开发和运维很困难。

系统复杂:内部多个模块紧耦合,关联依赖复杂,牵一发而动全身

运维困难:变更或升级的影响分析困难,任何一个小小修改都可能导致单体应用整体 运维出现故障。

无法扩展:很难通过水平扩展、多机部署的方式来提升系统的吞吐量,一般只能通过纵向不断堆单个机器或者群集的性能配置来提升。面临海量的互联网访问需求,很容易出现故障。(单台机器宕机影响业务线)

SOA架构

【解决单体式——拆】

SOA(面向服务架构)的思路:将一个庞大的单体应用拆分成多个服务模块,然后再将这些服务模块按照业务逻辑串起来,对外提供应用服务。

SOA:即面向服务的架构(SOA),是集成多个较大组件(一般是应用)的一种机制, 它们将整体构成一个彼此协作的套件。一般来说,每个组件会从始至终执行一块完整的业务 逻辑,通常包括完成整体大action所需的各种具体任务与功能。组件一般都是松耦合的,但这并非SOA架构模式的要求。

SOA架构的特征

基于SOA服务思想进行功能的抽取(重复代码问题解决),以服务为中心来管理项目。

各个系统之间要进行调用,所以出现ESB来管理项目(可以使用各种技术实现:webservice, rpc等)。

ESB是作为系统与系统之间桥梁,很难进行统一管理。

在这里插入图片描述

微服务架构

核心思路是拆分。单体项目的问题,通过把项目拆分成一个个小项目就可以解决。

与SOA区别:

微服务不再强调传统SOA架构里面比较重的ESB企业服务总线,真正地实现服务自治;

微服务的思想进入到单个业务系统内部,实现真正的组件化。
在这里插入图片描述

可以做实时的扩/缩容

连通云服务、容器

应用落地部署面临的挑战

敏捷的诉求

云间迁移

环境一致性

在这里插入图片描述

Docker与容器

容器是什么

容器技术是一种进程隔离的技术, 应用可以运行在一个个相互隔离的容器中。

与虚拟机相同的是可以为这些容器设置计算资源限制,挂载存储,连接网络;

而与虚拟机不同的是,这些应用运行时共用着一个Kernel

容器技术大大提升了对系统资源的利用率,也提高了应用的部署迁移效率。
在这里插入图片描述

一台虚拟机/物理服务器上只跑一个应用——但会造成资源浪费

容器相当于一台小型虚拟机,每台小虚拟机(容器)跑一个应用

容器自带应用运行的所有环境,只需将软件迁移过去即可运行

Namespaces:分配ID

cgroups:分配资源

SELinux:分配权限

Docker是什么

2010年,28岁的Solomon Hykes在旧金山成立专做 PaaS的公司,起名dotCloud,定位为为软件开发提供相 关的配套设施,包括语言环境,运行环境,存储等基础服 务。

在PaaS激烈竞争环境下,dotCloud为了生存,不得已开源核心引擎Docker,不料柳暗花明,dotCloud看到社区及众多PaaS大佬(Amazon, Google, IBM, MS, RedHat, VMware)对Docker的追捧及认可,顺势而为。

Docker与容器

Docker实际上是一家公司,在 2013年这家公司还叫做DotCloud, Docker是他们公司的一个容器管理产 品,2013年初,DotCloud决定将Docker开源,Docker在短短几个月间 风靡全球,DotCloud公司也更名为 Docker。

在这里插入图片描述

Docker核心技术及架构

Docker核心技术

进程隔离技术——namespace

Linux Namespace提供了一种内核级别的隔离系统资源的方法,通过将系统的全局资源放在不同的 Namespace中,实现资源隔离的目的,不同的Namespace程序,可以享有一份独立的系统资源。

在这里插入图片描述

进程资源配额技术——cgroups

利用Namespace可以构建一个相 对隔离的容器,而通过cgrous,可以 为容器设置系统资源配额,包括CPU、 内存、IO等。
在这里插入图片描述

其他进程隔离技术

Selinux和apparmor可以增强对容器的访问控制;

Capability的主要实现在于将超级用户root的权限分割成多种不同的capability权限,从而更严格的控制容器的权限。

Netlink技术可完成Docker容器的网络环境配置与创建。

这些Linux 内核技术,从安全、隔离、防火墙、访问等方面为容器的成熟落地打下了坚实的 基础。

在这里插入图片描述

Docker构造:client-server

在这里插入图片描述

Execdriver存储了容器的定义的配置信息;

Networkdriver的作用是完成docker容器网络环境的配置,包括容器的IP、端口、防火墙策略及 与主机的端口映射等;

Graphdriver则负责对容器镜像的管理;

容器 VS 虚拟化

在这里插入图片描述

容器内没有操作系统

虚拟机上装多个容器,实现一台虚拟机上跑多个应用

Docker的优势

在这里插入图片描述

容器常用术语

Docker Engine 容器引擎:基础设施标准化 使得底层OS透明化

Docker Image 容器镜像:应用交付标准化 代替了以往代码 +一堆部署文档 的交付方式

Docker Container 容器:运维管理标准化 种类应用都跑在一个个标准化的容器中

Docker Registry 容器仓库:分发部署 标准化一次构建,随处 部署

Docker核心概念

镜像构造:

打造镜像——推入镜像仓库(公有:都可访问/私有:需要IP、密码)——拉入其他环境——部署容器应用

【一次构建,多处部署】
在这里插入图片描述

Docker安装

Windows Docker安装

Windows10以前版本:

安装 Docker Toolbox,同时还附加安装

Windows10版本:

安装Docker Desktop for windows

https://docs.docker.com/docker-for-windows/install/

Linux安装Docker

安装前准备

cat /etc/centos-release 

uname –r #内核版本在3.10以上 

配置yum源

cd /etc/yum.repos.d/ 

wget http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 

安装 Docker 软件

yum install docker-ce -y 

启动 Docker 服务

systemctl start docker 

systemctl enable docker 

验证

docker info • docker version

Docker基本操作:启动Docker容器

拉取镜像

docker search centos

docker pull centos 

查看镜像

docker images  

创建一个后台容器

docker run –itd --name c1 centos /bin/bash 

查看容器

docker ps [-a]

docker inspect c1

容器生命周期管理

docker stop c1 

docker start c1 

docker restart c1 

docker rm c1 

打印容器的控制台输出

docker logs c1 

进入后台容器

docker exec -it c1 /bin/bash

Docker自定义镜像

1、首先开发者在开发环境机器上开发应用并制作镜像。Docker执行命令,构建镜像并存储在机器上;

2、开发者发送上传镜像命令,Docker收到命令后,将本地镜像上传到镜像仓库。

3、开发者向生产环境机器发送运行镜像命令,生产环境机器收到命令后,Docker 会从镜像仓库拉取镜像到机器上,然后基于镜像运行容器。
在这里插入图片描述

Docker镜像仓库

概述

集中存放镜像的地方,容易混淆的是注册服务器,它是管理镜像仓库的服务器,每个服务器可以有多个仓库,每个仓库可以有多个镜像,因此仓库可以认为是一个具体的目录

例如:dl.dockerpool.com/repo/centos:tag

dl.dockerpool.com是注册服务器,repo是镜像仓库的名称,centos是镜像的名称;

分类

公共仓库:docker官方维护的公共库,https://hub.docker.com/ ,可注册账号后构建自己的私有存储空间

私有仓库:在公司内部为了提高分享的速度,需要在公司内部自己搭建一个本地的仓库,供私人使用;

在这里插入图片描述

PaaS平台部署

http://212.129.164.208/

标签:SOA,容器,架构,20210728,笔记,镜像,Docker,docker
来源: https://blog.csdn.net/DHX_2019/article/details/119181204

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有