zoukankan      html  css  js  c++  java
  • 系统综合实践1

    系统综合实践——第1次实践作业:容器相关概念

    理解学习:在传统虚拟机已经能够满足大部分工作学习任务的前提下,为什么还需要继续折腾容器呢?

    一、资料学习

    1.课程问答

    • 回答问题1:在课程开始前,你是否了解过微服务或者docker?
      • 完全陌生
    • 回答问题2:完成上述内容后,你认为本次作业的难度如何?
      • 比较困难

    2.资料问答

    • 学习参考:
    • 微服务是什么,相较于传统的软件架构,它有什么优缺点,它是怎样部署的?
      • 相较于传统单体应用,微服务是具有单一职责、面向服务特征的软件开发技术,通过可独立部署的小组件将应用程序构造为一组松散耦合的服务。`
        • 搭建典型微服务架构:
          • 服务配置中心、服务注册中心、业务服务、服务网关
        • 微服务体系结构的优点
          • 1)服务的独立部署
          • 2)服务快速入门
          • 3)更适合敏捷开发
          • 4)全权负责,专责小组负责专门服务
          • 5)服务可以根据需要动态扩展
          • 6)重复使用代码
        • 微服务体系结构的缺点
          • 1)调用复杂性高的分布式部署。
          • 2)独立数据库、分布式事务挑战
    • 具体到docker,什么是docker镜像,什么是docker容器,二者的关系是什么?
      • Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口。它是目前最流行的 Linux 容器解决方案。docker用途,目前有三大类:提供一次性的环境、提供弹性的云服务、组建微服务架构。
      • Docker镜像将应用程序与该程序的依赖,打包在一个文件里面。运行这个文件,就会生成一个虚拟容器。
        • 很多开源工具都有docker镜像,这就使得用户只需要下载使用就行,完全省去了处理软件依赖、缺少库文件、安装部署等环节。
        • 容器是镜像的一个实例,程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样。

    二、课程实践——搭建docker环境

    1.实验环境

    • VisualBox_6.1虚拟机
      • 有条件还是直接装双系统;后期实验需要大量内存开销,虚拟机要满载。
    • 安装了 Ubuntu 18.04.5 Desktop amd64 的虚拟机系统;

    2.实验目的

    • 完成docker的基本入门。

    3.软件工具

    三、实验过程

    1.Docker安装

    • 整理一个docker安装的shell脚本,完成安装;
      整理脚本——有助于以后重新快速部署,这是一个良好的编程习惯。https://get.docker.com/
    curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
    
    • 手动安装
      • 更新 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 -
    
    • 设置稳定版仓库
    sudo add-apt-repository 
       "deb [arch=amd64] https://download.docker.com/linux/ubuntu 
      $(lsb_release -cs) 
      stable"
    
    • 安装:Docker Engine-Community
    sudo apt-get update
    sudo apt-get install docker-ce docker-ce-cli containerd.io
    
    • 启动测试
    sudo systemctl start docker
    sudo docker run hello-world
    sudo docker run --rm hello-world  //  容器运行后自动删除
    
    • docker命令,查看Docker客户端的所有命令选项。
    sudo docker
    sudo docker 【command】 --help
    
    • 解决docker安装后每次都需要sudo权限运行的问题;
    sudo groupadd docker
    sudo gpasswd -a ${USER} docker
    sudo service docker restart
    newgrp - docker
    sudo chmod a+rw /var/run/docker.sock
    

    2.镜像

    从docker hub上任意拉取一个镜像,操作镜像的查询和删除,也可使用其他容器仓库,例如阿里;

    (1)配置加速器

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

    (2)pull镜像

    • 列出本地主机上的镜像列表
    sudo docker images
    
    • 在docker-hub上复制tag
      • ctrl + c可以中断pull操作
    sudo docker pull httpd:latest
    sudo docker pull ubuntu:latest
    sudo docker pull django:python3
    

    • 在 aliyun拉取
    sudo docker pull registry.cn-hangzhou.aliyuncs.com/lancl_hh/my_store:[镜像版本号]
    

    (3)删除镜像

    sufo docker rmi + 镜像名/如,httpd
    sudo docker rmi -f httpd:latest 683a7aad17d3
    - 清空
    sudo docker rmi $(sudo docker images -q)    // -q :静默模式,只显示编号。
    

    3.容器

    用步骤-2的镜像启动一个容器,操作容器的查询、修改和删除;

    (1)启动容器

    • 当运行容器时,使用的镜像如果在本地中不存在,docker 就会自动从 docker 镜像仓库中下载
    sudo docker run -it ubuntu /bin/bash
    - 退出
    exit
    

    (2)容器操作

    • 查询所有容器/List containers——ps
    sudo docker ps -a
    
    • 容器的启停和删除
    - 启动一个已停止的容器:
    docker start + 【container_id】
    - 退出一个在后台运行的容器
    docker stop + 【container_id】
    - 删除容器
    docker rm -f +【container_id】  // -f :通过 SIGKILL 信号强制删除一个运行中的容器。
    - 删除所有容器(1)
    sudo docker ps -a | awk '{ print $1}' | tail -n +2
        // awk 是用来提取列的主要工具;{print $1} 就是将某一行(一条记录)中以空格为分割符的第一个字段打印出来。
        // tail -n +2 表示从第二行开始读取
    sudo docker rm $(sudo docker ps -a | awk '{ print $1}' | tail -n +2)
    - 删除所有已经停止的容器(2):
    sudo docker rm $(sudo docker ps -a -q)    // -q :静默模式,只显示容器编号。
    

    4.镜像仓库

    创建并维护自己的镜像仓库,实现拉取和上传镜像等。

    • 终端操作login
      • 用于登录的用户名username=阿里云账号全名,
      • 密码为开通服务时设置的密码。
    sudo docker login --username=lancl_兰 registry.cn-hangzhou.aliyuncs.com
    

    • 上传镜像
    - 根据实际镜像信息替换示例中的【ImageId】和【镜像版本号】参数。
    sudo docker tag 【ImageId】 registry.cn-hangzhou.aliyuncs.com/lancl_hh/my_store:【镜像版本号】
    - 分两次键入命令行
    sudo docker push registry.cn-hangzhou.aliyuncs.com/lancl_hh/my_store:[镜像版本号]
    

    • 拉取镜像
    sudo docker pull registry.cn-hangzhou.aliyuncs.com/lancl_hh/my_store:[镜像版本号]
    
    • 重命名镜像
    sudo docker tag 683a7aad17d3 httpd:latest
    

    Tips

    • 如何解决docker镜像下载慢的问题?
      • 阿里云镜像加速器
    • 解决docker安装后每次都需要sudo权限运行的问题;
      • 1.创建docker组:sudo groupadd docker
      • 2.将当前用户加入docker组:sudo gpasswd -a ${USER} docker
      • 3.重启服务:sudo service docker restart
      • 4.刷新docker成员:newgrp - docker
      • 5.更改/var/run/docker.sock权限
      • sudo chmod a+rw /var/run/docker.sock
    • 除了Docker Hub,尝试在其他国内平台(例如阿里云)建立并维护自己的镜像仓库;
    • 针对本次实践任务中遇到的各类问题和解决办法进行总结(不少于3条);
      • 2/3/4熟悉基础操作,
      • 了解国内主流docker镜像:阿里、华为的镜像仓库
    • 实验报告文档质量高,描述清晰,条理清楚。
  • 相关阅读:
    关于EOM(Enterprise Operating Model)企业经营模型(1)
    关于EOM(Enterprise Operating Model)企业经营模型(4)
    关于EOM(Enterprise Operating Model)企业经营模型(2)
    Linux之父的十大名言[转]
    初识Lucene
    C#实现所有经典排序算法
    屏蔽浏览器关闭按钮及ALT+F4 快捷键
    DateTime ToString 大全
    Lucene.Net 系列
    SQL Server Date Formats
  • 原文地址:https://www.cnblogs.com/lance-haha/p/14605819.html
Copyright © 2011-2022 走看看