服务器选型
在选择服务器操作系统时, Windows 附带了许多您需要付费的功能。
Linux 是开放源代码,可让用户免费使用。
对比
Linux 是开源的,因此是免费的。 Web 主机仅需要支付技术支持即可安装和维护程序(如果需
要)。服务器提供商不需要将额外的成本转嫁给客户。另一方面,对于 Windows 服务器,公司通常
必须为操作系统和定期使用许可证付费。
Linux 服务器及其运行的应用程序通常设计为精益运行,因此通常使用较少的计算机资源。好处是
程序员可以 “ 即时 ” 修改 Linux 服务器和软件,而无需重新启动,这在 Windows 环境中是不可能的。
Microsoft
Windows 服务器在多数据库任务下趋向于变慢,崩溃的风险更高。
Linux 比 Windows 更安全。尽管没有哪个系统能幸免于黑客和恶意软件的攻击,但是 Linux 往往是
一个低调的目标。由于 Windows 运行着世界上大多数软件,因此,黑客们渴望获得低挂的果实
Windows 。
虚拟机
虚拟机指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。
微服务的部署策略
部署单体应用意味着运行大型应用的多个相同副本,通常提供若干台( N )服务器(物理机或虚拟
机),在每台服务器上运行若干个( M )应用实例。部署单体应用并不总是简单明了,但还是比部署微
服务应用简单。
微服务应用由几十甚至数百个服务组成。服务用不同的语言和框架写成,每个都是一个小应用,包括特
定的部署、资源、扩展和监控需求,例如,根据服务需求运行若干数量的服务实例。
此外,每个服务实例必须配套提供适当的 CPU 、内存 和 I/O 资源。更具挑战性的是,尽管如此复杂,部
署服务还必须快速、可靠和性价比高。
基于主机(物理机或虚机)的多服务实例
“ 基于主机的多服务实例 ” 模式是最为传统的应用程序部署方法。
在该模式下,软件开发人员可以提供单个或多个物理机或虚机,同时在每个主机上运行多个服务实例。
此模式有几种不同的实现形式,其中包括:将每一个服务实例都作为一个单独的进程,或是在同一进程
中运行多个服务实例。
优点 : 由于多个服务实例使用的是同一服务器、及其操作系统,因此它们的资源使用效率相对较
高。
不足 :
除非每个实例都是一个单独的进程,否则您对服务实例的实际控制权并不大。而且,您无法
限制每个实例能够使用到的资源比例。这将带来主机内存被大量消耗的隐患。
如果多个服务实例在同一进程中运行,它们之间会缺乏隔离关系。这通常会导致在相同进程
中,某个行为异常的服务能够直接影响、甚至中断其他的服务。
由于运营团队需要了解服务的详细信息,因此在部署期间,他们可能发生人为错误的风险较
高。显然,开发和运营团队之间需要通过必要的信息交换,来尽可能地消除复杂性。
基于容器的服务实例
在这种部署模式下,每个服务实例都运行在其各自的容器中,因此也被称为操作系统级别的虚拟化机制。
使用这一模式时,用户将服务打包为容器镜像。每个容器镜像就是一个文件系统镜像,由应用和运行服
务所需的库构成。有的容器镜像还包括完整的 Linux 根文件系统,有的则更轻量。
以部署 Java 服务为例,构建的容器镜像包括 Java 运行时、 Apache Tomcat 服务器、以及编译好的 Java
应用。
一旦将服务打包为容器镜像,就启动一到多个容器。通常每个物理机或虚拟主机上会运行多个容器,会
用到 Kubernetes 或 Marathon 这样的集群管理工具来管理容器。
集群管理工具把主机看做资源池,根据每个容器需要的资源和每个主机上可用的资源来调度容器。
容器的优点与虚拟机类似,服务实例之间完全隔离,也能轻松监控每个容器的资源消耗
Docker
Docker 是近年来新兴的虚拟化工具,它可以和虚拟机一样实现资源和系统环境的隔离。
虚拟机与容器的区别
VM(VMware) 在宿主机器、宿主机器操作系统的基础上创建虚拟层、虚拟化的操作系统、虚拟化的仓库,然后再安装应用;
Container(Docker 容器 ) ,在宿主机器、宿主机器操作系统上创建 Docker 引擎,在引擎的基础上再安装应用。
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安装
Docker 支持运行 CentOS 版本: CentOS 7.X
内核版本检查 : uname - r
卸载可能存在的旧版本
1.输入uname -r 检查版本
2.复制下面的指令,检查是否存在旧版本
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
旧版本的 docker 叫做 docker 或者 docker-engine ,如果有安装,先卸载其以及其依赖,新版本的
docker 叫做 docker-ce
docker-ce (社区版,免费)
docker-ee (专业版,收费)
3.输入安装必要的系统工具指令: yum install -y yum-utils device-mapper-persistent-data lvm2
4.添加docker-ce安装源: yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
配置阿里云Docker Yum源: yum-config-manager --add-repo
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
注:任选一个
5.更新yum缓存: yum makecache fast
6.安装docker-CE: 输入 yum -y install docker-ce
1 )默认安装的是最新版本的稳定版
2 )查看版本列表请使用如下命令:
yum list docker-ce --showduplicates | sort -r
3 )如果要安装特定版本的 docker-CE 请使用如下命令格式:
yum install docker-ce-
7.yml.pid占用: -- rm -f /var/run/yum.pid
注:如果安装报错了就执行这行语句,强制删除yum.pid
Docker基本使用
基本操作
1.查看服务状态
systemctl status docker
2.启停服务
systemctl start docker 启动
systemctl stop docker 停止
systemctl restart docker 重启
开机自启
systemctl enable docker
systemctl disable docker
注:开启服务
注:查看服务状态
仓库+镜像
Docker 运行容器前需要本地存在对应的镜像, 如果镜像不存在, Docker 会尝试先从默认镜像仓库下
载
(默认使用 Docker Hub 公共注册服务器中的仓库), 用户也可以通过配置,使用自定义的镜像仓库
配置加速器 ( 通过阿里云控制台获得加速地址 )
vi / etc / docker / daemon . json
{
"registry-mirrors" :[ " 你的阿里云专属加速器地址 " ]
}
①登录你的阿里云点击控制台
②搜索镜像点击最下方的容器镜像服务
③点击镜像工具中的镜像加速器,复制加速器地址
1.输入 touct /etc/docker/daemon.json 然后输入 cd /etc/docker进入目录
2.输入vi deamon.json进入编辑界面
3.输入下面指令
注:https://5ix5vqk8.mirror.aliyuncs.com这个地址是你的阿里云加速器地址
点击电脑Esc键输入:wq退出编辑
{
"registry-mirrors":["https://5ix5vqk8.mirror.aliyuncs.com"]
}
注:如果配置阿里云镜像加速器失败,可以不用配置(配置了阿里云影响加速器下载会快一点)
4.启动服务,查看服务状态,下载镜像
docker pull 镜像名称
搜索镜像
docker search 镜像名称
下载镜像
docker pull 镜像名
获取一个 centos 系统的基础镜像可以使用如下的命令 :
docker pull centos (未指定版本一般会使用 latest ( 最新的 ) 版本)
docker pull centos : 版本号 (或者直接指定版本)
5.查看宿主机上的镜像
docker images
查看 image 位置
cd / var / lib / docker / containers ( / var / lib / docker 为 docker 默认安装目录 ) && ll
6.docker rmi 镜像ID/标签
docker rmi centos
docker rmi - f centos : latest
如果提示镜像被使用,需要先停止某个 ID 的容器,那么要先删除容器再删除镜像。或者强制删除镜像。
正确做法:先删除依赖该镜像的所有容器, 再来删除镜像
容器
容器是 Docker 的另一个核心概念。简单来说,容器是镜像的一个运行实例。
镜像是静态的只读文件,而容器带有运行时需要的可写文件层,同时,容器中的应用进程处于运行状态
创建容器
docker create - it centos : latest
docker create - it -- name centos01 centos : latest
centos : latest 即镜像名字 : 版本 ( 或镜像 ID ) ,将使用指定镜像创建容器。另外, Docker 会检查本地是否
存在指定的镜像,
不存在就从公有仓库下载
- it :是两个参数, - i : interactive 容器具有交互功能, - t :容器将提供伪终端
-- name :指定生成的容器的名字,允许空,如果不指定会自动生成
启动、停止、重启容器
docker start 容器 ID | name | name : tag
docker stop 容器 ID | name | name : tag
docker restart 容器 ID | name | name : tag
查看当前的容器
docker ps
docker ps - a
启动容器
更改容器名称
查询容器
启动cent01容器
进入容器
docker exec - it 容器 ID / 容器 NAME / bin / bash
docker exec - it 容器 ID / 容器 NAME bash ( 简写 )
退出容器
退出时如果想继续运行容器:按顺序按【 ctrl + p 】,【 ctrl + q 】
如果不想继续运行:按【 ctrl + d 】或输入 exit
删除容器
docker rm 容器 ID
docker rm - f 容器 ID