zoukankan      html  css  js  c++  java
  • 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用户组

     
  • 相关阅读:
    带修改离线主席树 + 树状数组 ZOJ
    树上主席树 + LCA SPOJ
    基础静态主席树 POJ
    数列分块入门1-9 LibreOJ
    Some about me
    [Java]Thinking in Java 练习2.12
    [Java]Thinking in Java 练习2.10
    [Java]Java中的自动包装
    [Java]Thinking in Java 练习2.2
    [杂记]CodeBlocks下载、安装及设置
  • 原文地址:https://www.cnblogs.com/huckleberry/p/12677974.html
Copyright © 2011-2022 走看看