第1次实践作业
(1) 课程调查
- 感觉这门课程可能有点类似于软件工程实践
- 需要团队协作,经历一个完整的开发过程。
- 需要自主学习课外相关知识。
(2) 了解微服务
- 微服务是什么?
- 微服务是一个新兴的软件架构,就是把一个大型的单个应用程序和服务拆分为数十个的支持微服务。一个微服务的策略可以让工作变得更为简便,它可扩展单个组件而不是整个的应用程序堆栈,从而满足服务等级协议。
- 微服务的特点
- 按照业务来划分服务,单个服务代码量小,业务单一,易于维护。
- 每个微服务都有自己独立的基本组件,例如数据库、缓存等,且运行在独立的进程中。
- 微服务之间的通信是通过HTTP协议或者消息组件,且具有容错能力。
- 微服务有一套服务治理的解决方案,服务之间不耦合,可以随时加入和剔除服务。
- 整个微服务系统应该有一个完整的安全机制,包括用户验证、权限验证、资源保护等。
- 相较于传统的软件架构,它有什么优缺点?
- 优点
- 每个服务足够内聚,足够小,代码容易理解、开发效率提高
- 服务之间可以独立部署,微服务架构让持续部署成为可能
- 每个服务可以根据自己的需要部署到合适的硬件服务器上
- 容错性提高,一个服务的内存泄露并不会让整个系统瘫痪
- 微服务能使用不同的语言开发
- 缺点
- 开发人员要处理分布式系统的复杂性
- 开发人员要设计服务之间的通信机制
- 涉及多个服务直接的自动化测试也具备相当的挑战性
- 需要考虑微服务之间数据的一致性
- 优点
(3) 学习docker技术
-
Docker:
- 一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可 以实现虚拟化。
- Docker 包括三个基本概念:
- 镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。
- 容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、暂停等。
- 仓库(Repository):仓库可看着一个代码控制中心,用来保存镜像
-
Docker Compose:
- Compose 是用于定义和运行多容器 Docker 应用程序的工具。
通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。
- Compose 是用于定义和运行多容器 Docker 应用程序的工具。
-
Dockerfile:
- 一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明
-
docker machine:
- 允许你在虚拟宿主机上安装Docker,并使用docker-machine命令管理这个宿主机的工具
-
Swarm:
- Docker Swarm 是 Docker 的集群管理工具。它将 Docker 主机池转变为单个虚拟 Docker 主机
-
K8s:
- 是一个跨主机集群的开源的容器调度平台,它可以自动化应用容器的部署、扩展和操作 , 提供以容器为中心的基础架构。
(4)在Ubuntu上搭建Docker环境
-
操作系统:
Ubuntu 19.10
-
步骤:
-
跟新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 -
-
**9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88 通过搜索指纹的后8个字符,验证您现在是否拥有带有指纹的密钥。
$sudo apt-key fingerprint 0EBFCD88
pub rsa4096 2017-02-22 [SCEA]
9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88
uid [ unknown] Docker Release (CE deb) docker@docker.com
sub rsa4096 2017-02-22 [S] -
使用以下指令设置稳定版仓库:
sudo add-apt-repository \ "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \ $(lsb_release -cs) \ stable"
-
更新 apt 包索引
sudo apt-get update
-
安装最新版本的 Docker Engine-Community 和 containerd
sudo apt-get install docker-ce docker-ce-cli containerd.io
-
测试 Docker 是否安装成功,输入以下指令,打印出以下信息则安装成功:
sudo docker run hello-world
成功:
-
-
将非root用户加入docker组,以允许免sudo执行docker
sudo gpasswd -a 用户名 docker
-
重启服务并刷新docker组成员
sudo service docker restart newgrp - docker
-
使用:
-
开启容器
首先需要先输入
docker pull httpd
拉取httpd镜像 或者直接输入docker run -it httpd /bin/bash
,如果没有该镜像,会自动拉取 -
退出容器
退出容器只需要在容器中输入
exit
,即可退出
-
-
查看容器
docker ps -a
-
重启容器
docker restart <容器ID>
运行后就会进入后台运行
-
进入后台运行的容器
docker attach <容器ID>
-
删除容器
docker rm -f <容器ID>
-
仓库管理
-
账号登录
docker login
需要输入账号密码,没有的话需要注册一个 ,网站:Docker Hub
-
查看本地镜像
docker images
-
拉镜像到本地
docker pull httpd
-
Push镜像
docker tag <镜像id> <要推入仓库的用户名>/<要推入的仓库名>:<新定义的tag>
docker push <要推入仓库的用户名>/<要推入的仓库名>:<镜像标签>
-