1.Docker是什么
2.容器技术与虚拟化技术的比拟
3.Docker能做什么
4.Docker的根本组成和架构图解
5.Docker的装置步骤
6.Docker为什么要比VM虚拟机快
1.Docker是什么
在答复docker是什么之前,咱们先来看看为什么docker会呈现:
假如咱们当初正在开发一个我的项目,咱们应用本人的工作机进行开发,开发环境具备某些特定的配置。其它开发人员各自工作机上的开发环境也各有不同。咱们正在开发的利用依赖于以后咱们电脑上的配置。此外公司还有各种部署环境(dev,test,pre,prod),咱们不心愿因为这些开发环境而重复进行创立服务器环境的配置,请问?
如果确保利用能在这些服务器上顺利运行?而且在部署过程中不呈现令人头疼的版本,配置问题。
对于这一系列部署环境,如何只进行一次配置而不是频繁地反复配置?
答案就是应用容器。Docker对于上述问题,给出了一个标准化的解决方案————零碎平滑移植,容器虚拟化技术。
配置环境步骤繁琐,十分麻烦,每台机器都要配置一次。所以软件能不能自带环境装置?换句话说,装置的时候,把原始环境也复制过去,这样就能解决每台机器须要配置一遍的问题,也解决了“在我的电脑上能跑,在你的电脑上不行”的问题。
之前配置一个利用的运行环境,须要装置各种软件,JDK/RabbitMQ/MySQL/Redis等等,每一个配置都须要工夫进行装置,而且还得留神版本,在本机windows/mac上装置完之后,在服务器linux还得装置,移植是十分麻烦的。
Docker的次要指标是”Build,Ship and Run Any App,Anywhere”,也就是通过对用户App及环境的一次构建,让用户APP(也能够是一个数据库等利用)及其环境可能做到”一次镜像,处处运行“。它次要解决了运行环境和配置问题,有助于整体公布的容器虚拟化技术。
Docker将利用打成镜像,通过镜像成为容器运行在Docker下面的实例,而Docker容器在工作操作系统都是统一的,只须要一次配置好环境,换到别的机子上就能够一键部署,大大简化了操作。
2.容器技术与虚拟化技术的比拟
传统虚拟机技术:
其实虚拟机技术就是一种带环境装置的技术。
虚拟机能够在一个操作系统上运行另一个操作系统,比方在win11外面运行Linux。而且被运行的零碎毫无感知,看上去就和实在零碎一样。对于win11来说,虚拟机就是一个一般文件,不须要了能够删掉,对其余局部毫无影响。
WIN 11 | VMWare | CentOs | 各种配置+软件 | 虚拟机实例 |
---|
毛病:
资源占用多
冗余步骤多
启动速度慢
容器虚拟机技术
因为虚拟机存在上述那些毛病,Linux倒退出了另一种虚拟化技术。
容器只须要软件工作所须要的资源库,其它一律不须要,零碎因而变得更轻量级并保障部署在任何环境中的软件都能始终如一地运行。
3.Docker能做什么
Docker的指标:一次构建、随处运行。
3.1)更疾速的利用交付和部署
传统的开发实现之后,还须要提供一堆安装程序和配置阐明文档,装置部署后还要依据配置文档进行繁冗的配置。Docker化之后只须要交付大量的镜像文件,在正式环境加载镜像并运行即可,利用装置配置在镜像外面曾经内置好,大大节俭了配置部署工夫。
3.2)更便捷的降级和扩缩容
随着微服务的倒退,大量的微服务会在Docker里运行,每个Docker容器将变成一块“积木”,利用的降级和扩容将会变得非常容易。
3.3)更简略的零碎运维
利用容器化运行后,生产环境运行的利用与开发,测试环境的利用高度一致,容器会将应用程序相干的环境齐全封装起来。不会因为操作系统的不一致性给利用带来影响,产生其它的bug。
3.4)更高效的计算资源利用
Docker是内核级虚拟化,其不像传统的虚拟化技术一样须要额定的Hypervisor反对,所以在一台物理机上能够运行很多个容器实例,可大大晋升物理服务器的CPU和内存的利用率。
4.Docker的根本组成和架构图解
Docker有以下几个重要的概念:
镜像(image):镜像是一个只读的模板,能够用来创立很多容器。镜像就像JAVA中的类一样,而docker容器实例就相似于java new进去的对象。
容器(container):Docker利用容器独立运行利用,利用程序运行在容器外面,容器外面有一个虚拟化的环境,容器就是用镜像创立运行的实例。
仓库(repository):相似于maven仓库,是集中寄存镜像文件的场合。
5.Docker的装置步骤
目前,CentOS 仅发行版本中的内核反对 Docker。Docker 运行在CentOS 7 (64-bit)上,要求零碎为64位、Linux零碎内核版本为 3.8以上,这里选用Centos7.x。
咱们能够依据官网的装置流程来执行:https://docs.docker.com/engin… ,只不过配置镜像仓库须要留神一下,要设置成国内镜像。
5.1)卸载旧版本
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
5.2)yum装置gcc相干
yum -y install gcc
yum -y install gcc-c++
5.3)装置须要的软件包
yum install -y yum-utils
5.4)设置stable镜像仓库
官网:
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
咱们设置为国内镜像:
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
5.5)更新yum软件包索引
yum makecache fast
5.6)装置DOCKER CE
yum -y install docker-ce docker-ce-cli containerd.io
5.7)启动docker
systemctl start docker
5.8)测试
docker version
docker run hello-world
当咱们运行run命令的时候,咱们会先查看本机有没有这个镜像,有的话间接运行,没有的话去镜像仓库里拉取镜像,再进行运行。
6.Docker为什么要比VM虚拟机快
(1)docker有着比虚拟机更少的形象层
因为docker不须要Hypervisor(虚拟机)实现硬件资源虚拟化,运行在docker容器上的程序间接应用的都是理论物理机的硬件资源。因而在CPU、内存利用率上docker将会在效率上有显著劣势。
(2)docker利用的是宿主机的内核,而不须要加载操作系统OS内核
当新建一个容器时,docker不须要和虚拟机一样从新加载一个操作系统内核。它只须要必要的操作系统文件,就能够间接启动。进而防止引寻、加载操作系统内核返回等比拟费时费资源的过程,当新建一个虚拟机时,虚拟机软件须要加载OS,返回新建过程是分钟级别的。而docker因为间接利用宿主机的操作系统,则省略了返回过程,因而新建一个docker容器只须要几秒钟。
Docker | 虚拟机 | |
---|---|---|
操作系统 | 与宿主机共享OS | 宿主机OS上独立运行虚拟机OS |
存储大小 | 小,便于存储传输 | 大,须要操作系统全副文件 |
运行性能 | 简直无额定性能损失 | 操作系统的额定CPU耗费 |
移植性 | 灵便,轻便,一致性高 | 轻便,与虚拟化技术耦合度高 |
部署速度 | 速度快 | 较慢 |