2020系统综合实验 第1次实践作业

(1)课程调查

   首先作为一个纯小白来讲,最初我还以为这门课会主要讲操作系统(尴尬)。后来简要地看了课程内容后才知道学的是有关于微服务和Docker的知识。大学里面多接触一些知识也会方便以后的工作,毕竟技多不压身嘛。我希望能通过这门课程掌握并熟练使用Docker,并将其应用到实际的应用中。

(2)了解微服务 

  • 微服务是什么

  微服务是一个新兴的软件架构,就是把一个大型的单个应用程序和服务拆分为数十个的支持微服务。一个微服务的策略可以让工作变得更为简便,它可扩展单个组件而不是整个的应用程序堆栈,从而满足服务等级协议。

  • 微服务的特点
  1. 针对特定服务发布,影响小,风险小,成本低
  2. 频繁发布版本,快速交付需求
  3. 低成本扩容,弹性伸缩,适应云环境
  • 微服务的优点
  1. 它们往往比传统的应用程序更有效地利用计算资源。这是因为它们通过扩展组件来处理功能瓶颈问题。这样一来,开发人员只需要为额外的组件部署计算资源,而不需要部署一个完整的应用程序的全新迭代。最终的结果是有更多的资源可以提供给其它任务。
  2. 它们更快且更容易更新。当开发者对一个传统的单体应用程序进行变更时,他们必须做详细的QA测试,以确保变更不会影响其他特性或功能。但有了微服务,开发者可以更新应用程序的单个组件,而不会影响其他的部分。测试微服务应用程序仍然是必需的,但它更容易识别和隔离问题,从而加快开发速度并支持DevOps和持续应用程序开发。
  3. 微服务架构有助于新兴的云服务,如事件驱动计算。类似AWS Lambda这样的功能让开发人员能够编写代码处于休眠状态,直到应用程序事件触发。事件处理时才需要使用计算资源,而企业只需要为每次事件,而不是固定数目的计算实例支付。
  • 微服务的缺点
  1. 微服务架构带来过多的运维操作, 可能需要团队具备一定的 DevOps 技巧
  2. 多服务运维难度,随着服务的增加,运维的压力也在增大
  3. 分布式系统可能复杂难以管理。因为分布部署跟踪问题难。当服务数量增加,管理复杂性增加
  4. 数据一致性难以保证
  5. 系统集成测试和性能监控复杂
  • 微服务的部署
  1.  把持续集成映射到微服务
  2. 构建流水线和持续交付
  3. 平台特定的构建物
  4. 操作系统构建物
  5. 定制化镜像
  6. 将镜像作为构建物
  7. 不可变服务器

(3)学习docker技术

  • Docker的安装搭建
    • 卸载旧版本
      $ sudo apt-get remove docker docker-engine docker.io containerd runc
    • 设置仓库

      1、更新 apt 包索引

      $ sudo apt-get update

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

         $ sudo apt-get install 
          apt-transport-https 
          ca-certificates 
            curl 
           gnupg-agent 
          software-properties-common

      3、添加 Docker 的官方 GPG 密钥

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

      4、设置稳定版仓库

      $ sudo add-apt-repository 
       "deb [arch=amd64] https://download.docker.com/linux/ubuntu 
       $(lsb_release -cs) 
       stable"
    • 安装Docker Engine-Community

             1、更新索引包

      $ sudo apt-get update

      2、安装Docker Engine-Community 和 containerd 

       $ sudo apt-get install docker-ce docker-ce-cli containerd.io
       $ apt-cache madison docker-ce

      3、安装特定版本Docker

       $ sudo apt-get install docker-ce=<VERSION_STRING> docker-ce-cli=<VERSION_STRING> containerd.io
    • 测试Docker安装成功

 


  • 容器的使用

     1、获取镜像

    $ docker pull ubuntu

       2、ubuntu 镜像启动一个容器,参数为以命令行模式进入该容器和退出该容器

    $ docker run -it ubuntu /bin/bash

       3、查看所有容器信息

    $ docker ps -a

      4、启动容器和停止容器

    $ docker start 5e554c16084f 
    $ docker stop 5e554c16084f 

     5、重启并进入容器

     $ docker restart <容器 ID>
     code1: docker attach       //退出终端,容器停止.
     code2: docker exec         //退出容器终端,不会导致容器的停止.(建议使用)

 

 

       6、查看容器输出日志

    Docker logs 5e554c16084f

    7、导出和导入容器

    $ docker export 5e554c16084f > ubuntu.tar  //容器导出到本地文件
    $ cat docker/ubuntu.tar | docker import - test/ubuntu:v1   //本地文件导入容器

 

     8、删除容器

    $ docker rm -f 容器ID


  • 镜像的使用

     1、列出所有镜像

      $ docker images

     2、查找镜像

    docker search httpd

    3、拖取镜像

    docker pull httpd

    4、创建并更新镜像

    

     5、提交副本容器

    docker commit -m="has update" -a="runoob" e218edb10161 runoob/ubuntu:v2

    6、删除镜像

    $ docker rmi hello-world

(4)小结

       本次实验主要是熟悉了一些Docker的基本操作,另外通过一步步的实操也出现过许多问题,通过浏览器搜索到相应的最佳解决方案。

下面是我在此次实验中遇到的问题以及解决的对策。

    1、在安装Docker之前执行sudo apt-get update报没有公钥问题

       Key:我是把ubuntu更新一遍之后再去执行就没问题啦,不过这个ubuntu更新的网速我是真的无力吐槽,不超过50kb/s的网速令人窒息。

       2、在安装完Docker后,验证sudo docker  run hello-world时报TLS handshake timeout错误

     Key:docker默认镜像拉取地址为国外仓库下载速度较慢,报错“net/http: TLS handshake timeout”。通过修改daemon配置文件/etc/docker/daemon.json使用加速器

    sudo mkdir -p /etc/docker
    sudo tee /etc/docker/daemon.json <<-'EOF'
    {
        "registry-mirrors": ["https://u5kqywr6.mirror.aliyuncs.com"]
    }
    EOF
    sudo systemctl daemon-reload
    sudo systemctl restart docker

    

    3、在拖取镜像时出现权限问题

              Key: docker进程使用Unix Socket而不是TCP端口。而默认情况下,Unix socket属于root用户,因此需要root权限才能访问。  

    sudo groupadd docker #添加docker用户组
    sudo gpasswd -a $XXX docker #检测当前用户是否已经在docker用户组中,其中XXX为用户名,例如我的,zxl
    sudo gpasswd -a $USER docker #将当前用户添加至docker用户组
    newgrp docker #更新docker用户组

 
原文地址:https://www.cnblogs.com/huckleberry/p/12677974.html