2020系统综合实践 第1次实践作业
(1)课程调查
- 对于这么课程,一开始以为是关于计算机系统方面的。但是经过第一次课的学习,让我改变我的看法,并对此有了进一步的了解。docker类似于应用托管平台,用户可以在上面开发,交付和运行应用程序,实现应用程序与基础架构分离,可能就像云服务那样子的吧,只不过面向的对象缩小了,针对的是应用程序。希望自己能把这么课学好,增加技能包。
(2)了解微服务。
- 微服务是什么
微服务是一个新兴的软件架构,就是把一个大型的单个应用程序和服务拆分为数十个的支持微服务。一个微服务的策略可以让工作变得更为简便,它可扩展单个组件而不是整个的应用程序堆栈,从而满足服务等级协议。
对于大型应用程序来说,增加更多的用户则意味着提供更大型的弹性计算云(EC2)实例规模,即便只是其中的一些功能扩大了规模亦是如此。其最终结果就是企业用户只需为支持超过微服务的那部分需求的EC2实例支付费用。 - 微服务特点
1.针对特定服务发布,影响小,风险小,成本低
2.频繁发布版本,快速交付需求
3.低成本扩容,弹性伸缩,适应云环境 - 微服务优点
每个服务足够内聚,足够小,代码容易理解、开发效率提高;服务之间可以独立部署,微服务架构让持续部署成为可能;每个服务可以各自进行负载均衡扩展和数据库扩展,而且,每个服务可以根据自己的需要部署到合适的硬件服务器上;容易扩大开发团队,可以针对每个服务(service)组件开发团队;提高容错性(fault isolation),一个服务的内存泄露并不会让整个系统瘫痪;系统不会被长期限制在某个技术栈上。 - 微服务缺点
开发人员要处理分布式系统的复杂性;开发人员要设计服务之间的通信机制,对于需要多个后端服务的user case,要在没有分布式事务的情况下实现代码非常困难;涉及多个服务直接的自动化测试也具备相当的挑战性;服务管理的复杂性,在生产环境中要管理多个不同的服务的实例,这意味着开发团队需要全局统筹(PS:现在docker的出现适合解决这个问题);应用微服务架构的时机如何把握?对于业务还没有理清楚、业务数据和处理能力还没有开始爆发式增长之前的创业公司,不需要考虑微服务架构模式,这时候最重要的是快速开发、快速部署、快速试错。 - 微服务部署
1.基于主机(物理机或虚机)的多服务实例;2.基于主机(物理机或虚机)的服务实例;3.基于容器的服务实例;4.无服务器部署。
(3)学习docker技术
- 概念理解
- docker:Docker:是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口
- docker compose:Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。
- Dockerfile:Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。
- docker machine:是一种可以让您在虚拟主机上安装 Docker 的工具,并可以使用 docker-machine 命令来管理主机
- Swarm:Docker Swarm 是 Docker 的集群管理工具。它将 Docker 主机池转变为单个虚拟 Docker 主机。 Docker Swarm 提供了标准的 Docker API,所有任何已经与 Docker 守护程序通信的工具都可以使用 Swarm 轻松地扩展到多个主机。
- k8s:是一个编排容器的工具,其实也是管理应用的全生命周期的一个工具,从创建应用,应用的部署,应用提供服务,扩容缩容应用,应用更新,都非常的方便,而且可以做到故障自愈。
搭建环境
经过无数次不厌其烦的尝试,终于安装成功了。
阿里云官方镜像加速(强烈建议,不然下载速度会让人崩溃)
拉取镜像
sudo docker pull ubuntu
启动容器与退出
sudo docker run -it unbuntu /bin/bash
exit
查看所有容器
sudo docker ps -a
停止容器运行
sudo docker stop 178ea643af66
查询容器
sudo docker inspect 178ea643af66
开启与删除容器
sudo docker start 178ea643af66
sudo docker rm -f 178ea643af66
sudo docker ps
拉取查看删除镜像
sudo docker pull ubuntu:18.04
sudo docker images
sudo docker rmi ubuntu
sudo docker images