一.课程调查
起初以为是和系统结构相配套的实践课,大概是硬件方向的实验,然而没想到又和博客园扯上了关系,不经回想起以前被软件工程支配的恐惧。。。48学时的课时令人害怕,再加上大数据实践,组网实践,编译原理实践,周末两天满课让想考研的我瑟瑟发抖,还是希望有足够的时间去安排课程和考研复习,另外既然是一门新的课程,自然希望学习到新的知识,能够于应用实践
二.了解微服务
- 微服务
- 微服务是一种软件开发技术,是面向服务的架构(SOA)结构风格的一种变体,将应用程序编排成一系列松耦合的服务。在微服务架构中,各个服务是细粒度的,协议是轻量级的。
- 特点
- 针对特定服务发布,影响小,风险小,成本低
- 频繁发布版本,快速交付需求
- 低成本扩容,弹性伸缩,适应云环境
- 相较于传统的软件架构的优缺点
- 优点
- 每个服务独立存在,所以可以单独部署,不用每次发布某个功能都经历一次全服务发布。
- 遵循单一功能原则,自服务之间可以通过RESTFUL或者RPC调用,功能解藕
- “细粒度” 的高可扩展性,每个服务都可以单独扩展,单独负载均衡
- 去中心化,尽可能地实现 “自服务”
- 有利于简化单独的开百发测试以及部署,对开发团队友好
- 缺点
- 服务的可用性和维护性高度依赖于服务治理,如度果治理得不好将会是灾难
- 某些服务可能造成性能瓶颈,某些服务的宕机可能导致很多服务受影响
- 服务配置繁琐
- 优点
- 部署
- 基于主机(物理机或虚机)的多服务实例
- 基于主机(物理机或虚机)的服务实例
- 基于容器的服务实例
- 无服务器部署
三.docker的安装/环境配置
1.docker的相关概念
(1)容器
容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
(2)镜像
Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。
镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义。
(3)仓库
仓库可看着一个代码控制中心,用来保存镜像。
(4)docker
Docker 是一个用于开发,交付和运行应用程序的开放平台。能够将应用程序与基础架构分开,从而可以快速交付软件。借助 Docker,可以与管理应用程序相同的方式来管理基础架构。通过利用 Docker 的方法来快速交付,测试和部署代码,减少编写代码和在生产环境中运行代码之间的延迟。
(5)docker compose
Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。
(6)Dockerfile
Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。
(7)docker machine
Docker Machine 是一种可以让您在虚拟主机上安装 Docker 的工具,并可以使用 docker-machine 命令来管理主机。Docker Machine 也可以集中管理所有的 docker 主机,比如快速的给 100 台服务器安装上 docker。
(8)Swarm
Docker Swarm 是 Docker 的集群管理工具。它将 Docker 主机池转变为单个虚拟 Docker 主机。 Docker Swarm 提供了标准的 Docker API,所有任何已经与 Docker 守护程序通信的工具都可以使用 Swarm 轻松地扩展到多个主机。
(9)k8s
k8s是基于容器的集群管理平台,它的全称,是kubernetes。
2.环境配置
2.1设置 Docker 仓库
更新 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
使用以下指令设置稳定版仓库
$ sudo add-apt-repository
"deb [arch=amd64] https://download.docker.com/linux/ubuntu
$(lsb_release -cs)
stable"
2.2安装 Docker Engine-Community
更新 apt 包索引。
$ sudo apt-get update
安装最新版本的 Docker Engine-Community 和 containerd
$ sudo apt-get install docker-ce docker-ce-cli containerd.io
或安装特定版本的 Docker Engine-Community,请在仓库中列出可用版本,然后选择一种安装。列出仓库中可用的版本:
$ apt-cache madison docker-ce
使用第二列中的版本字符串安装特定版本,例如 5:18.09.13-0ubuntu-xenial。
$ sudo apt-get install docker-ce=5:18.09.1~3-0~ubuntu-xenial docker-ce-cli=5:18.09.1~3-0~ubuntu-xenial containerd.io
测试 Docker 是否安装成功
$ sudo docker run hello-world
安装成功则显示以下信息
四.学习docker技术
1.容器的使用
1.1获取镜像
使用 docker pull 命令来载入 ubuntu 镜像
sudo docker pull ubuntu
1.2启动容器
使用 ubuntu 镜像启动一个容器,参数为以命令行模式进入该容器;使用echo打出hello world
参数说明:
-i: 交互式操作。
-t: 终端。
ubuntu: ubuntu 镜像。
/bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash。
要退出终端,直接输入 exit:
sudo docker run -it ubuntu /bin/bash
1.3容器的查询
查看所有的容器命令如下:
sudo docker ps -a
1.4删除容器
sudo docker rm -f <容器ID>
1.5停止/启动容器
sudo docker start <容器 ID>
sudo docker stop <容器 ID>
1.6停止的容器进入交互式shell
都需要先重启容器,然后使用以下两种方式皆可
sudo docker start <容器ID>
sudo docker attach <容器ID>
或
sudo docker exec -it <容器ID> /bin/bash
1.7查看容器信息
sudo docker inspect <容器ID>
1.8容器更新信息
查看可选择的更新方式
docker container update --help
2.镜像的使用
2.1获取阿里云镜像加速器
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["加速器地址"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
2.2列出镜像列表
查看本地镜像
sudo docker images
2.3从Docker Hub网站搜索镜像
sudo docker search httpd
2.4使用上图的httpd官方版镜像
sudo docker pull httpd
再次查看本地镜像
2.5删除镜像
删除hello-world镜像,并查看镜像列表
docker rmi hello-world
3.Docker Hub仓库管理
3.1登录
登录需要输入用户名和密码,登录成功后,就可以从Docker Hub上拉取账号下的全部镜像
docker login
3.2push镜像到仓库
sudo docker tag ubuntu 1263199084/ubuntu
sudo docker push 1263199084/ubuntu
这时候登陆Docker Hub仓库可以发现镜像成功push到仓库
3.3从仓库获取镜像,并查看镜像列表
sudo docker pull 1263199084/ubuntu
3.4最后注销登陆
sudo docker logout