一、容器基础知识讲解
1.1 微服务的部署策略
部署单体应用意味着运行大型应用的多个相同副本,通常提供若干台(N)服务器(物理机或虚拟 机),在每台服务器上运行若干个(M)应用实例。部署单体应用并不总是简单明了,但还是比部署微 服务应用简单。 微服务应用由几十甚至数百个服务组成。服务用不同的语言和框架写成,每个都是一个小应用,包括特 定的部署、资源、扩展和监控需求,例如,根据服务需求运行若干数量的服务实例。 此外,每个服务实例必须配套提供适当的 CPU、内存 和 I/O 资源。更具挑战性的是,尽管如此复杂,部 署服务还必须快速、可靠和性价比高。
1.2 基于主机(物理机或虚机)的多服务实例
“基于主机的多服务实例”模式是最为传统的应用程序部署方法。 在该模式下,软件开发人员可以提供单个或多个物理机或虚机,同时在每个主机上运行多个服务实例。 此模式有几种不同的实现形式,其中包括:将每一个服务实例都作为一个单独的进程,或是在同一进程 中运行多个服务实例。
优点: 由于多个服务实例使用的是同一服务器、及其操作系统,因此它们的资源使用效率相对较 高。
不足: 除非每个实例都是一个单独的进程,否则您对服务实例的实际控制权并不大。而且,您无法 限制每个实例能够使用到的资源比例。这将带来主机内存被大量消耗的隐患。 如果多个服务实例在同一进程中运行,它们之间会缺乏隔离关系。这通常会导致在相同进程 中,某个行为异常的服务能够直接影响、甚至中断其他的服务。 由于运营团队需要了解服务的详细信息,因此在部署期间,他们可能发生人为错误的风险较 高。显然,开发和运营团队之间需要通过必要的信息交换,来尽可能地消除复杂性。
1.3 基于容器的服务实例
使用这一模式时,用户将服务打包为容器镜像。每个容器镜像就是一个文件系统镜像,由应用和运行服 务所需的库构成。有的容器镜像还包括完整的 Linux 根文件系统,有的则更轻量。 以部署 Java 服务为例,构建的容器镜像包括 Java 运行时、Apache Tomcat 服务器、以及编译好的 Java 应用。 一旦将服务打包为容器镜像,就启动一到多个容器。通常每个物理机或虚拟主机上会运行多个容器,会 用到 Kubernetes 或 Marathon 这样的集群管理工具来管理容器。 集群管理工具把主机看做资源池,根据每个容器需要的资源和每个主机上可用的资源来调度容器。
1.4 虚拟机与容器的区别
VM(VMware)在宿主机器、宿主机器操作系统的基础上创建虚拟层、虚拟化的操作系统、虚拟化的仓 库,然后再安装应用; Container(Docker容器),在宿主机器、宿主机器操作系统上创建Docker引擎,在引擎的基础上再安装应用。
1.5 docker三要素
Docker镜像
Docker 镜像就是一个只读的模板。
例如:一个镜像可以包含一个完整的 ubuntu 操作系统环境,里面仅安装了 Apache 或用户需要的其它 应用 程序。
镜像可以用来创建 Docker 容器。 Docker 提供了一个很简单的机制来创建镜像或者更新现有的镜像,用户甚至可以直接从其他人那里下载 一 个已经做好的镜像来直接使用。
Docker仓库
仓库是集中存放镜像文件的场所。
有时候会把仓库和仓库注册服务器(Registry)混为一谈,并不严格区分。实际上,仓库注册服务器上 往往存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的 标签(tag)。
仓库分为公开仓库(Public)和私有仓库(Private)两种形式。
最大的公开仓库是 Docker Hub,存放了数量庞大的镜像供用户下载。
当然,用户也可以在本地网络内创建一个私有仓库。 当用户创建了自己的镜像之后就可以使用 push 命令将它上传到公有或者私有仓库,这样下次在另外一台机器上使用这个镜像时候,只需要从仓库上 pull 下来就可以了。
Docker容器
Docker 利用容器来运行应用。
容器是从镜像创建的运行实例。
它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安 全 的平台。 可以把容器看做是一个简易版的 Linux 环境(包括root用户权限、进程空间、用户空间和网络空间等) 和运 行在其中的应用程序。
1. 提供一次性的环境。比如,本地测试他人的软件、持续集成的时候提供单元测试和构建的环境 2. 提供弹性的云服务。因为 Docker 容器可以随开随关,很适合动态扩容和缩容
3. 组建微服务架构。通过多个容器,一台机器可以跑多个服务,因此在本机就可以模拟出微服务架构
二、docker软件使用讲解
2.1 docker软件安装
第一步:
-- 安装系统工具
yum install -y yum-utils device-mapper-persistent-data lvm2
第二步:
-- 配置yum源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
第三步:
-- 更新yum缓存
yum makecache fast
第四步:
-- 安装docker-CE:
yum -y install docker-ce
第五步:
-- 设置开机自启
systemctl enable docker-- 启动
systemctl start docker
第六步:Docker 运行容器前需要本地存在对应的镜像, 如果镜像不存在, Docker 会尝试先从默认镜像仓库下载
vi /etc/docker/daemon.json-- 在里面添加地址
{"registry-mirrors": ["https://docker.m.daocloud.io",]
}
第七步:
-- 重新加载
systemctl daemon-reload && systemctl restart docker
第八步:
-- 下载镜像
docker pull centos:7
第九步:
-- 查看已经下载的镜像
docker images
2.2 docker软件基础使用
-- 创建一个容器
docker create nginx-- 查看正在运行的容器
docker ps-- 查看所有容器
docker ps -a
创建后下面那一串是id
docker rmi 【id或name】 删除镜像docker rm -f $(docker ps -aq) 删除所有容器docker rmi -f $(docker images-q) 删除所有镜像