系统综合实践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镜像:阿里、华为的镜像仓库
  • 实验报告文档质量高,描述清晰,条理清楚。
posted @ 2021-04-01 12:55  兰小路  阅读(85)  评论(0编辑  收藏  举报