zoukankan      html  css  js  c++  java
  • 2020系统综合实践 第1次实践作业

    一、课程调查

    理想中的这门课按照字面上的理解,不再像以往一样是单纯的编程软件开发,而是从计算机系统方面出发对学过的知识进行综合运用。

    对这门课的认识:从第一节课的内容来看,前期的学习微服务准备工作是针对一个完整的项目而言的,后续是需要应用上的,与课程的名字综合实践相呼应。希望学习完这门课后能够对生成Docker应用程序有一定程度的了解,对开发-编写Dockerfile-创建自定义镜像-定义Docker-compose-启动Docker应用-测试-部署或继续开发这一系列步骤形成大致印象。

    二、了解微服务

    一种新型的软件架构——微服务

    1.微服务是什么

    微服务架构是一项在云中部署应用和服务的新技术。微服务可以在“自己的程序”中运行,并通过“轻量级设备与HTTP型API进行沟通”。

    2.微服务的特点

    • 小到只有单一职责
    • 去容器化并且作为 Unix Service 安装
    • 分布在不同的版本控制代码库里
    • 自动初始化
    • 关注状态和自动扩展
    • 它们通过统一格式的接口进行交互

    3.相较于传统的软件架构,微服务有什么优缺点

    优点:
    • 每个服务彼此隔离——可以轻松的监控每个容器所消耗的资源,可以单独部署,不用每次发布某个功能都经历一次全服务发布;
    • 部署简单——不需要了解服务技术细节,主要掌握容器管理API即可;
    • 快速构建——容器是轻量级技术,可以非常快速的构建,容器启动页很快,因为没有繁琐的操作系统引导机制。
    缺点:
    • 容器技术不够成熟、不够安全,因为容器彼此共享了主机的OS内核;
    • 需要自己管理容器基础架构以及可能运行的VM基础架构,服务的可用性和维护性高度依赖于服务治理,如果治理得不好将会是灾难;
    • 部署微服务比起单体服务的部署更加复杂。微服务通常由数十甚至上百个服务组成。服务以不同的语言和架构编写,每个都是迷你应用程序,具有自己特定的部署、资源、扩展和监控要求。
    • 分布式系统可能复杂难以管理,并且分布部署导致跟踪问题难

    4.微服务的部署

    单主机多服务实例模式——使用此模式,用户要提供一到多台物理或虚拟主机,在每个主机上运行多个服务实例。

    单主机单服务实例模式——每台主机上运行独立的服务实例。这一模式有两种不同实现——单虚拟机单服务实例和单容器单服务实例。

    • 单虚拟机单服务实例—把每个服务打包为一个虚拟机镜像,,每个服务实例就是一台使用此镜像启动的虚拟机。

    • 单容器单服务实例—每个服务实例运行在自有容器中。容器是操作系统级别的虚拟化机制。每个容器包含一个或多个运行在沙盒中的进程。从进程的角度看,它们有着自己的端口命名空间和根文件系统。用户能够限制容器的内存和 CPU 资源,有些容器还能限制 I/O 速率。

    三、学习docker技术

    docker作为微服务的一种十分典型的代表技术,我们要做的是:

    1、学习了解docker的相关概念(容器、镜像等),了解docker、docker compose、Dockerfile、docker machine、Swarm、k8s是什么,是做什么用的。

    (1)Docker

    Docker 是一个开源的应用容器引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者在本地编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机)、bare metal、OpenStack 集群和其他的基础应用平台。

    简单的理解,Docker类似于集装箱,各式各样的货物,经过集装箱的标准化进行托管,而集装箱和集装箱之间没有影响。也就是说,Docker平台就是一个软件集装箱化平台,这就意味着我们自己可以构建应用程序,将其依赖关系一起打包到一个容器中,然后这容器就很容易运送到其他的机器上进行运行,而且非常易于装载、复制、移除,非常适合软件弹性架构。

    (2)Docker Compose

    Compose 是用于定义和运行多容器 Docker 应用程序的工具。

    通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。

    (3)Dockerfile

    Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。

    虽然我们可以通过docker commit命令来手动创建镜像,但是通过Dockerfile文件,可以帮助我们自动创建镜像,并且能够自定义创建过程。本质上,Dockerfile就是由一系列命令和参数构成的脚本,这些命令应用于基础镜像并最终创建一个新的镜像。它简化了从头到尾的构建流程并极大的简化了部署工作。

    (4)Docker Machine

    Docker Machine 是一种可以让您在虚拟主机上安装 Docker 的工具,并可以使用 docker-machine 命令来管理主机。管理的虚拟主机可以是机上的,也可以是云供应商,如阿里云,腾讯云,AWS,或 DigitalOcean。

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

    (4)Swarm

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

    支持的工具包括:Docker Compose、Docker Machine等。

    (5)k8s

    K8S,就是基于容器的集群管理平台,它的全称是kubernetes。是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效。

    2、搭建docker环境,系统环境为Ubuntu

    (1)容器的创建

    docker run -it ubuntu /bin/bash
    

    容器的删除

    docker rm -f <容器ID>

    容器的更新

    docker update 命令可动态的更新一个或多个容器的配置。如:

    docker run -dit --name test --kernel-memory 50M ubuntu bash
    
    docker update --kernel-memory 80M test
    

    容器的查询:

    docker ps -a
    

    (2)创建并维护自己的镜像仓库,

    在docker hub上创建账号并创建自己的仓库,并在本地使用login登录

    docker login
    

    (3)拉取镜像

    使用docker pull命令来载入 ubuntu 镜像:

    docker pull ubuntu
    

    上传镜像

    docker push [docker ID]/[仓库名]:tagname
    

    Dockerhub中也有了push上去的镜像

  • 相关阅读:
    JavaScript压缩混淆 / 格式化 / 美化工具
    5.PCA
    4.SVM(基于结构风险最小化)
    3(5).线性分类之朴素贝叶斯
    3(4).线性分类之Gaussian Discriminant Analysis高斯判别模型
    sklearn---Logistic Regression
    3(3).线性分类之logistic regression(基于经验风险最小化)
    2.2 数据结构---数组(查找)
    2.1 数据结构---数组
    3(2).线性分类之线性判别分析(LDA)
  • 原文地址:https://www.cnblogs.com/huang0926huang/p/12687447.html
Copyright © 2011-2022 走看看