- 为什么需要docker
- 主流虚拟化技术分析
- Docker的安装与部署
- Docker的完整架构图
1.为什么需要docker
系统运行环境变更,软件版本升级,操作系统不一致等等问题都会导致本来一个很简单的应用,在不同的机器上会出现各种稀奇古怪的问题。既影响用户体验,也大大加重了开发与运维的成本。所以最先诞生了vm虚拟机,Linux 容器技术(LXC)等虚拟化的技术方案。而 Docker 就是在LXC的基础上发展过来的。将应用运行在 Docker 容器上面,而 Docker 容器在任何操作系统上都是一致的,这就实现了跨平台、跨服务器。只需要一次配置好环境,换到别的机子上就可以一键部署好,大大简化了操作
2.主流的虚拟化技术分析
目前市面较受欢迎的虚拟机以及虚拟化技术主要有KVM、XEN、VMware、docker。下面来简单的描述一下,仅供参考:
VMware :
纯软件模拟一整台计算机,从硬件的底层到操作系统到应用层的一种全虚拟化技术
优势:
在虚拟机操作系统上的应用完全感知不到自己是在虚拟机里,就好像你住在一家宾馆房间里,别人把那个房间设计的跟你自己家一样。所有东西的摆放位置,窗户朝向也都是一样的。跟住家里没有区别。也就意味着无需修改任何代码,直接拎包入住。
劣势:
商业付费软件、
每运行一台虚拟机就相当于多跑了一个操作系统,对设备的性能有很大的考验。
就好像你只想吃青圆子里面的馅,却要先把糯米皮给吃下去,无疑给胃加重了负担。
XEN:
Xen通过一种叫做半虚拟化的技术 获得高效能的表现。通过省去了捕获和模拟硬件流程等一大段工作,通过一个接口调用VMM实现对应的处理。需要有硬件辅助虚拟化的支持才可以在windows系统上运行。搭配linux比较友好。
KVM-qemu:
KVM全称for Kernel-based virtual machine,意为基于内核的虚拟机。
在虚拟化底层技术上,kvm和vmware后续版本一样,都是基于硬件辅助虚拟化实现。KVM本身基于硬件辅助虚拟化,仅仅实现CPU和内存的虚拟化,但是一台计算机不仅仅有CPU和内存,还需要各种各样的I/O设备,不过KVM不负责这些。经过改造后的QEMU,负责外部设备的虚拟,KVM负责底层执行引擎和内存的虚拟,两者彼此互补,成为新一代云计算虚拟化方案的宠儿。
优势:开源,开源,开源
劣势:kvm技术只能在linux服务器上使用
Docker:
不同于虚拟化技术要完整虚拟化一台计算机,容器技术更像是操作系统层面的虚拟化,它只需要虚拟出一个操作系统环境。通过linux内核的Cgroups技术和namespace技术的支撑,隔离操作系统文件、网络等资源,在原生操作系统上隔离出一个单独的空间,将应用程序至于其中运行,这个空间的形态上类似于一个容器将应用程序包含在其中,故取名容器技术。
优势:轻量化部署服务并且可以高效利用设备的资源。
劣势:共享linux内核导致的安全问题。容器与容器之间并非完全的隔离。
说了这么多分别来看一下各自的结构图
主要差别体现在有无虚拟化硬件这一层。前三种虚拟化技术逃不出这两张图的范畴。
这张是docker的虚拟化结构图,可以理解为是基于内核的一种虚拟化技术。
比起上面的那三种技术,最明显的优势就是启动速度达到毫秒级别,轻量化,具有更快的应用移植和部署能力。又是开源技术,说它真香毫不为过。
Docker的安装与部署
本次演示以Centos7.6 64位为例。root用户省略sudo命令即可。
1.卸载旧版本(第一次安装直接跳过这一步即可)
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
2.设置存储库
sudo yum install -y yum-utils
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
国内可以添加一下阿里云的仓库,地址如下:
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
3.安装 Docker 引擎
sudo yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin
4.启动 Docker
sudo systemctl start docker
5.从仓库拉取一个名为hello-world的镜像进行引擎测试
sudo docker run hello-world
6.配置阿里云镜像加速器,加快镜像拉取速度
cd /etc/docker/
vim daemon.json
这个文件里面写入
{
"registry-mirrors": ["https://xdvia6p6.mirror.aliyuncs.com"]
}备注:里面这个地址每个阿里云账户都不一样。填写自己实际获得的
阿里云镜像加速地址:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
sudo systemctl daemon-reload
sudo systemctl restart docker
7.简单的操作一下
docker version 查看安装好的docker版本
docker images 查看所有已经拉取好的镜像
docker run -it 镜像名 在前台以交互的方式来运行一个容器
Docker的完整架构图
下图为官网提供的docker架构图
下图为Dockerfile构建镜像的流程图
后续docker常用命令、数据卷、以及dockerfile构建镜像等内容,放在下一部分。兄弟们希望你们多多支持,点赞收藏。