第1次实践作业

课程调查

本来以为是系统结构综合实践,结果是系统综合实践,不是很清楚要上什么。希望这门课可以学到职业技能,对未来的职业发展有帮助。

了解微服务

  • 微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间相互协调、互相配合,为用户提供最终价值。每个服务运行在其独立的进程中,服务和服务之间采用轻量级的通信机制相互沟通(通常是基于HTTP的Restful API).每个服务都围绕着具体的业务进行构建,并且能够被独立的部署到生产环境、类生产环境等。另外,应尽量避免统一的、集中的服务管理机制,对具体的一个服务而言,应根据业务上下文,选择合适的语言、工具对其进行建。

  • 相对于传统软件的优点:

    • 提升开发交流,每个服务足够内聚,足够小,代码容易理解;

    • 服务独立测试、部署、升级、发布;

    • 按需定制的DFX,资源利用率,每个服务可以各自进行x扩展和z扩展,而且,每个服务可以根据自己的需要部署到合适的硬件服务器上;每个服务按

    • 需要选择HA的模式,选择接受服务的实例个数;

    • 容易扩大开发团队,可以针对每个服务(service)组件开发团队;

    • 提高容错性(fault isolation),一个服务的内存泄露并不会让整个系统瘫痪;

    • 新技术的应用,系统不会被长期限制在某个技术栈上;

  • 相对于传统软件的缺点

    • 没有银弹(可以有效提高开发效率同时避免软件重大缺陷的方法),微服务提高了系统的复杂度;
    • 开发人员要处理分布式系统的复杂性;
    • 服务之间的分布式通信问题;
    • 服务的注册与发现问题;
    • 服务之间的分布式事务问题;
    • 数据隔离再来的报表处理问题;
    • 服务之间的分布式一致性问题;
    • 服务管理的复杂性,服务的编排;
    • 不同服务实例的管理。
  • 微服务的部署

    • 微服务架构的应用系统包含若干个微服务
    • 每个微服务部署多个实例
    • 通过自动部署与运维工具实现部署自动化

学习docker技术

docker是什么?

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源.
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

docker的相关概念?

镜像:Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系
容器:镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
仓库:仓库可看着一个代码控制中心,用来保存镜像。

dockerfile:dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。
docker compose:compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。
docker machine:Docker Machine 是一种可以让您在虚拟主机上安装 Docker 的工具,并可以使用 docker-machine 命令来管理主机。
docker swarm:Docker Swarm 是 Docker 的集群管理工具。它将 Docker 主机池转变为单个虚拟 Docker 主机。 Docker Swarm 提供了标准的 Docker API,所有任何已经与 Docker 守护程序通信的工具都可以使用 Swarm 轻松地扩展到多个主机。

搭建自己的docker环境
(安装的部分按照教程走基本上没有问题,而且我忘了截图...所以就只写一下步骤)

sudo apt-get remove docker docker-engine docker.io containerd runc//删除旧版本
sudo apt-get update//更新索引
/************************/
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common//安装apt迎来包
/**********************/
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -//添加官方密钥
/***********************/
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"//设置稳定版
/**************************/
sudo apt-get install docker-ce docker-ce-cli containerd.io//安装最新版本的容器

docker的入门操作

  • 拉取镜像
    sudo docker pull ubuntu:19.04//从dockerhub拉取镜像

    sudo docker run ubuntu:19.04 /bin/echo hello world//在镜像Ubuntu:19.04上运行输出helloworld,测试镜像拉取是否成功

  • 容器的创建和删除

    sudo docker run -it ubuntu:19.04 /bin/bash //启动一个容器并进入容器的交互命令界面
    

    sudo dokcer rm -f **container id**     //删除容器
    


  • 容器的启动和停止

    sudo docker ps -a    //查看所有容器
    sudo docker start **cintainer id**   //启动容器 
    


    可以发现容器的状态发生改变

    sudo docker stoop **container id**    //停止容器
    


    容器停止

  • 容器的导出和导入

    sudo docker export **container id** > **filepath/filename.tar**    //  将容器导出到压缩文件
    


    sudo cat filepath/filename.tar  | sudo docker import - test/ubuntu    //将快照文件导入为镜像
    


  • 镜像的更新

    sudo docker commie -m=''描述'' -a='用户'   **container id** **repository:tag** //镜像更新
    


  • 镜像仓库的创建

    sudo docker pull registry    // 拉取取镜像仓库到本地
    curl http://server-ip:port/v2/_catalog    //访问查看仓库中存储的镜像
    


  • 镜像仓库的上传和下载

    sudo docker tag **repository:tag** server-ip:port/repository:tag    //为镜像打上标签,需要附带镜像仓库的ip地址,如果仓库在本地则使用127.0.0.1。
    sudo docker push server-ip:port/repository:tag    //上传镜像到镜像仓库
    


    sudo docker rmi **repository**    // 删除本地镜像
    sudo docker pull server-ip:port/repository:tag    //从镜像仓库下载镜像
    


  • 远程镜像仓库的管理

    • 注册一个dockerhub账户/登录账户

    • 镜像上传到账户仓库

      sudo docker tag **repository:tag** username/repository:tag    //与自己创建管理的不同,在dockerhub上使用的不是ip,是username。原理可能类似于域名解析什么的吧。
      sudo docker push coderlzh/ubuntu:19.04    //上传仓库
      


    • 从账户仓库下载镜像

posted @ 2020-04-15 13:20  031702627李至恒  阅读(128)  评论(0编辑  收藏  举报