1. docker与传统虚拟机的区别什么?
-
启动时间:
- 传统虚拟机是需要安装整个操作系统的,然后再在上面安装业务应用,启动应用,通常需要几分钟去启动应用
- 而docker是直接使用镜像来运行业务容器的,其容器启动属于秒级别;
-
资源消耗:
- Docker需要的资源更少,Docker在操作系统级别进行虚拟化,Docker容器和内核交互,几乎没有性能损耗
- 而虚拟机运行着整个操作系统,占用物理机的资源就比较多;
-
资源利用率:
- Docker更轻量,Docker的架构可以共用一个内核与共享应用程序库,所占内存极小;同样的硬件环境,Docker运行的镜像数远多于虚拟机数量,对系统的利用率非常高
- 一台物理机可以运行数百个容器,但是一般只能运行数十个虚拟机
-
隔离级别:
- 与虚拟机相比,Docker隔离性更弱,Docker属于进程之间的隔离,虚拟机可实现系统级别隔离
-
安全性:
- Docker的安全性也更弱,Docker的租户root和宿主机root相同,一旦容器内的用户从普通用户权限提升为root权限,它就直接具备了宿主机的root权限,进而可进行无限制的操作
- 虚拟机租户root权限和宿主机的root虚拟机权限是分离的,并且虚拟机利用如Intel的VT-d和VT-x的ring-1硬件隔离技术,这种技术可以防止虚拟机突破和彼此交互,而容器至今还没有任何形式的硬件隔离;
-
管理工具:
- Docker的集中化管理工具还不算成熟,
- 各种虚拟化技术都有成熟的管理工具,比如:VMware vCenter提供完备的虚拟机管理能力;
-
高可用性:
- Docker对业务的高可用支持是通过快速重新部署实现的,,但缺乏传统虚拟机那样的成熟机制。
- 虚拟化具备负载均衡,高可用、容错、迁移和数据保护等经过生产实践检验的成熟保障机制,Vmware可承诺虚拟机99.999%高可用,保证业务连续性;
-
创建速度:
- 虚拟化创建是分钟级别的
- Docker容器创建是秒级别的,Docker的快速迭代性,决定了无论是开发、测试、部署都可以节省大量时间;
-
环境一致性:
- 虚拟机可以通过镜像实现环境交付的一致性,但镜像分发无法体系化
- Docker在Dockerfile中记录了容器构建过程,可在集群中实现快速分发和快速部署。
2. Docker 工作原理简介
Docker 是一个容器化平台,它允许开发者将应用程序及其所有依赖项打包到一个轻量级、可移植的容器中,从而确保应用在任何环境中都能一致地运行。它有一些关键组件:
- Docker 客户端:用户与 Docker 交互的界面,通常是一个命令行工具。
- Docker 守护进程:运行在主机上,接收并处理客户端发送的指令。
- Docker 镜像:包含应用程序及其所有依赖项的只读模板。
- Docker 容器:镜像的运行实例,每个容器都是一个隔离的环境,在其中可以运行应用程序。
docker守护进程运行在宿主机上,守护进程从客户端接受命令并管理运行在主机上的容器,容器是一个运行时环境,这就是我们说的集装箱。
3. docker技术的三大核心概念是什么?
- 镜像:镜像是一种轻量级、可执行的独立软件包,它包含运行某个软件所需的所有内容,我们把应用程序和配置依赖打包好形成一个可交付的运行环境(包括代码、运行时需要的库、环境变量和配置文件等),这个打包好的运行环境就是image镜像文件。
- 容器:容器是基于镜像创建的,是镜像运行起来之后的一个实例,容器才是真正运行业务程序的地方。如果把镜像比作程序里面的类,那么容器就是对象。
- 镜像仓库:存放镜像的地方,研发工程师打包好镜像之后需要把镜像上传到镜像仓库中去,然后就可以运行有仓库权限的人拉取镜像来运行容器了。