第1次实践作业
1.课程调查
- 其实我本身对这门课并不是很了解,听名字还以为是硬件类的实验课,结果没想到竟然有点类似软工实践,那可真是太吓人了,只希望这门课不要像软工一样离谱就好,希望能有合理的时间安排来进行知识的消化吸收吧。久仰docker树莓派的大名,但从未动手实践,对于相关知识我还是很有兴趣去学习的。既然是做服务端的课程,自然是希望自己能够学到新知识,同时保证自己的身体健康。
2.了解微服务
微服务是什么,有什么特点,相较于传统的软件架构,它有什么优缺点,它是怎样部署的
- 微服务:
- 微服务是一种软件开发技术,是面向服务的架构(SOA)结构风格的一种变体,将应用程序编排成一系列松耦合的服务。在微服务架构中,各个服务是细粒度的,协议是轻量级的。
- 特点:
- 针对特定服务发布,影响小,风险小,成本低
- 频繁发布版本,快速交付需求
- 低成本扩容,弹性伸缩,适应云环境
- 优点:
- 提升开发交流,每个服务足够内聚,足够小,代码容易理解
- 服务独立测试、部署、升级、发布
- 按需定制的DFX,资源利用率,每个服务可以各自进行x扩展和z扩展,而且,每个服务可以根据自己的需要部署到合适的硬件服务器上
- 需要选择HA的模式,选择接受服务的实例个数
- 容易扩大开发团队,可以针对每个服务(service)组件开发团队
- 提高容错性(fault isolation),一个服务的内存泄露并不会让整个系统瘫痪
- 新技术的应用,系统不会被长期限制在某个技术栈上
- 缺点:
- 提高了系统复杂度
- 开发人员要处理分布式系统的复杂性
- 服务之间的分布式通信问题
- 服务的注册与发现问题
- 服务之间的分布式事务问题
- 数据隔离带来的报表处理问题
- 服务之间的分布式一致性问题
- 服务管理的复杂性,服务的编排
- 不同服务实例的管理##3.学习docker技术
- 如何部署:
- 一台主机部署多服务实例
- 每个主机一个服务实例
- 每台容器一个服务实例
- 松耦合,可独立部署
3.学习docker技术
- 相关概念
- docker:开源的应用容器引擎,开发者可以打包自己的应用到容器里面,然后迁移到其他机器的docker应用中,可以实现快速部署。如果出现的故障,可以通过镜像,快速恢复服务。
- docker compose:定义和运行多容器Docker应用程序的工具。
- Dockerfile:一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。
- docker machine:在虚拟主机上安装Docker的工具,并可以使用docker-machine命令来管理主机。
- Swarm:Docker的集群管理工具。
- k8s:开源的容器集群管理系统,可以实现容器集群的自动化部署、自动扩缩容、维护等
- 搭建docker环境
-
按照 官网步骤安装docker
-
从远程仓库拉取镜像:
sudo docker pull ubuntu
-
创建容器
sudo docker run -it ubuntu /bin/bash
参数说明:-i: 交互式操作。 -t: 终端。 /bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash。
并用
sudo docker ps -a
查看当前容器
进入容器并执行echo "hello"
-
删除容器
docker rm -f <容器ID>
-
容器查询
docker inspect <容器ID>
-
删除镜像
先停止容器,再删除容器,最后删除镜像docker stop <容器ID> docker rm <容器ID> docker rmi <镜像>
-
维护自己的镜像仓库
- 登录
使用sudo docker login
并输入在docker hub上创建的账号名和密码
- 上传本地镜像:
使用docker image tag [imageName] [username]/[repository]:[tag]
为本地的image标注用户名和版本
使用docker image push [username]/[repository]:[tag]
发布image文件sudo docker image tag ubuntu 471727250/myresp1:1 sudo docker image push 471727250/myresp1:1
上传成功
- 登录
-