docker初识
什么是docker
docker是一个增强版的LXC,它不是容器本身,其本质还是调用linux底层的技术。
在平常开发的时候,开发人员开发环境在各个主机上都不同,而要整合这些不同环境开发的组件,十分困难,docker解决了这个问题,docker通过虚拟化操作系统层,将该组件需要依赖的环境打包,形成镜像,在组织这些组件时,运维人员只需要使用docker的几条指令,就可以在一台主机上,跨环境搭载组件。
实现了build once run everywhere。(一次构建,多次使用)
什么是虚拟化,容器化
虚拟化是对整个计算机系统的某层进行虚拟,容器化是虚拟化的一种。
虚拟化是将一台计算机虚拟为多台逻辑计算机的技术,而容器化是虚拟化的一种。
虚拟机:虚拟机虚拟化的是硬件层,通过软件如VM等虚拟化硬件层。
容器:容器虚拟化的是操作系统层,及让进程只能看到自己需要的东西,让容器与容器之间实现了隔离。
相比虚拟机,容器更加轻量,虚拟机需要打包整个操作系统,而容器只需要打包项目和依赖信息即可。
容器比虚拟机资源利用率高,启动更快,这是因为虚拟机通过软件复用了硬件,而docker直接使用硬件,虚拟机需要启动操作系统,而docker直接复用宿主机的操作系统。
docker技术
前面提到,容器化首先需要将资源进行隔离,同时需要对资源进行控制和限制,着两项技术并非docker实现。
资源隔离是使用linux内核的namespace技术实现,而资源控制和限制是通过cgroups实现。
所谓的docker只是将内部技术组织,并且使用更加简单的指令操作镜像。
docker架构
docker是基于C/S模式的,docker架构如下。
docker的镜像都存储在镜像仓库中,当我们需要某些镜像时,我们可以从仓库中将进行pull下来,同时,我们也可以创建私人仓库,将我们的镜像push上去,目前国内的云服务厂商也有自己的镜像仓库,可供我们使用。