第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
        

        上传成功
posted @ 2020-04-13 17:50  方道友  阅读(190)  评论(0编辑  收藏  举报