第1次实践作业

(1) 课程调查

  • 感觉这门课程可能有点类似于软件工程实践
    • 需要团队协作,经历一个完整的开发过程。
    • 需要自主学习课外相关知识。

(2) 了解微服务

  • 微服务是什么?
    • 微服务是一个新兴的软件架构,就是把一个大型的单个应用程序和服务拆分为数十个的支持微服务。一个微服务的策略可以让工作变得更为简便,它可扩展单个组件而不是整个的应用程序堆栈,从而满足服务等级协议。
  • 微服务的特点
    • 按照业务来划分服务,单个服务代码量小,业务单一,易于维护。
    • 每个微服务都有自己独立的基本组件,例如数据库、缓存等,且运行在独立的进程中。
    • 微服务之间的通信是通过HTTP协议或者消息组件,且具有容错能力。
    • 微服务有一套服务治理的解决方案,服务之间不耦合,可以随时加入和剔除服务。
    • 整个微服务系统应该有一个完整的安全机制,包括用户验证、权限验证、资源保护等。
  • 相较于传统的软件架构,它有什么优缺点?
    • 优点
      • 每个服务足够内聚,足够小,代码容易理解、开发效率提高
      • 服务之间可以独立部署,微服务架构让持续部署成为可能
      • 每个服务可以根据自己的需要部署到合适的硬件服务器上
      • 容错性提高,一个服务的内存泄露并不会让整个系统瘫痪
      • 微服务能使用不同的语言开发
    • 缺点
      • 开发人员要处理分布式系统的复杂性
      • 开发人员要设计服务之间的通信机制
      • 涉及多个服务直接的自动化测试也具备相当的挑战性
      • 需要考虑微服务之间数据的一致性

(3) 学习docker技术

  • Docker:

    • 一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可 以实现虚拟化。
    • Docker 包括三个基本概念:
      • 镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。
      • 容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、暂停等。
      • 仓库(Repository):仓库可看着一个代码控制中心,用来保存镜像
  • Docker Compose:

    • Compose 是用于定义和运行多容器 Docker 应用程序的工具。
      通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。
  • Dockerfile:

    • 一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明
  • docker machine:

    • 允许你在虚拟宿主机上安装Docker,并使用docker-machine命令管理这个宿主机的工具
  • Swarm:

    • Docker Swarm 是 Docker 的集群管理工具。它将 Docker 主机池转变为单个虚拟 Docker 主机
  • K8s:

    • 是一个跨主机集群的开源的容器调度平台,它可以自动化应用容器的部署、扩展和操作 , 提供以容器为中心的基础架构。

(4)在Ubuntu上搭建Docker环境

  • 操作系统:

    Ubuntu 19.10

  • 步骤:

    • 跟新apt包索引:

      sudo apt-get update

    • 安装apt依赖包,用于通过HTTPS来获取仓库:

      sudo apt-get install

      ​ apt-transport-https

      ​ ca-certificates

      ​ curl

      ​ gnupg-agent

      ​ software-properties-common

    • 添加Docker的官方GPG密钥:

      curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

    • **9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88 通过搜索指纹的后8个字符,验证您现在是否拥有带有指纹的密钥。

      $sudo apt-key fingerprint 0EBFCD88

      pub rsa4096 2017-02-22 [SCEA]
      9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88
      uid [ unknown] Docker Release (CE deb) docker@docker.com
      sub rsa4096 2017-02-22 [S]

    • 使用以下指令设置稳定版仓库:

      sudo add-apt-repository 
         "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu 
         $(lsb_release -cs) 
         stable"
      
    • 更新 apt 包索引

      sudo apt-get update

    • 安装最新版本的 Docker Engine-Community 和 containerd

      sudo apt-get install docker-ce docker-ce-cli containerd.io

    • 测试 Docker 是否安装成功,输入以下指令,打印出以下信息则安装成功:

      sudo docker run hello-world

      成功:

  • 将非root用户加入docker组,以允许免sudo执行docker

    sudo gpasswd -a 用户名 docker
    
  • 重启服务并刷新docker组成员

    sudo service docker restart
    newgrp - docker
    
  • 使用:

    • 开启容器

      首先需要先输入docker pull httpd拉取httpd镜像 或者直接输入docker run -it httpd /bin/bash,如果没有该镜像,会自动拉取

    • 退出容器

      退出容器只需要在容器中输入exit,即可退出

  • 查看容器

    docker ps -a

  • 重启容器

    docker restart <容器ID>

    运行后就会进入后台运行

  • 进入后台运行的容器

    docker attach <容器ID>

  • 删除容器

    docker rm -f <容器ID>

  • 仓库管理

    • 账号登录

      docker login

      需要输入账号密码,没有的话需要注册一个 ,网站:Docker Hub

    • 查看本地镜像

      docker images

    • 拉镜像到本地

      docker pull httpd

    • Push镜像

      docker  tag  <镜像id> <要推入仓库的用户名>/<要推入的仓库名>:<新定义的tag>

      docker push <要推入仓库的用户名>/<要推入的仓库名>:<镜像标签>

原文地址:https://www.cnblogs.com/SilentSamsara/p/12701255.html