当前,虚拟化技术在互联网后端应用非常广泛,它可以优化资源利用、方便跨域共享、实现资源隔离。对于企业中的测试人员来说,也不可避免地会接触到,所以有必要加深对它的了解和熟悉。当测试人员职业技能发展到自动化测试、测试开发层次,相应的工作也很可能会从写脚本、搭建框架,升级到开发测试平台,如何高效地实现测试平台的部署、维护,也成为测试人员需要面对的一个问题。本文就从Docker的原理开始,介绍一下Docker容器化技术在测试平台部署中的应用。
虚拟化常用的技术形式,有主机级虚拟化和容器级虚拟化两种形式。
我们通常使用的虚拟机(如VMWare WorkStation),就是典型的主机级虚拟化的形式。在宿主机硬件平台上,先安装宿主机操作系统,然后在操作系统中安装虚拟机管理器。在这个虚拟机管理器的基础之上,可以虚拟出多个硬件平台(如果你的电脑资源足够),然后每个硬件平台上再安装自己的操作系统内核,构造自己的用户空间。这种情况下,不同虚拟机之间的隔离性是非常好的,但过于重量级,消耗大量软硬件资源。
Linux内核的不断演进,使容器级虚拟化成为现实。容器级虚拟化,在宿主机硬件平台的Linux操作系统中,增加一个隔离环境管理器,借助这个隔离环境管理器,直接分出若干个用户空间。这些用户空间中部分资源共享,其他资源则实现彻底的隔离。
容器级虚拟化,是借助于Linux内核的三大技术来实现的。这三大技术就是Chroot、名称空间和CGroups。
Chroot是操作系统级的虚拟机,它可以将指定位置作为/根目录,将程序运行限制在指定根目录中,从而实现操作系统中虚拟出多个根目录,实现了可视化的隔离。
名称空间总共有Mount(文件系统)、UTS(主机名、域名)、IPC(信号量、消息队列、共享内存)、PID(进程编号)、NetWork(网络设备、网络栈、端口等)、User(用户、用户组)六个。从Linux2.4.19开始,直到3.8版本,依次实现了对这六个名称空间的隔离。
CGroups,用来为隔离的用户空间按比例分配CPU、内存等资源。
在以上技术的支撑下,通过系统调用,即可实现容器级虚拟化。但对普通用户来说,系统调用难度太大,于是在Sourceforge上产生了一个叫做LXC的项目。LXC是LinuX Container的简称,它通过二次开发,把系统调用和操作封装成了一组工具。它最早把完整的容器技术用一组工具和模板实现。但它也存在一些问题,如模板需要高度定制,文件和数据迁移困难,对容器批量创建的支持有限,隔离性不够好。于是,在2013年初,在LXC基础上,dotCloud公司推出了开源项目Docker,让用户不用关心容器内部的管理,操作更加简捷。
Docker不是容器,容器是Linux内核支持的功能,而Docker是容器化的简化工具。Docker通过镜像技术 ,把用户空间所需文件整体编排好,打包成镜像文件,放在一个集中的仓库。生成用户空间时,连到服务器上,找到镜像,拖到本地,基于镜像启动容器。这极大地降低了容器的使用难度。在一个容器中只运行一个主进程,进程终止,容器终止。分发部署容易,真正实现了“一次编写到处运行”。
Docker架构如下:
(1)Docker 守护进程(Daemon)
Docker守护进程(dockerd)监听Docker API请求,并管理Docker对象,如镜像(Images)、容器(Containers)、网络(Networks)和卷(Volumes)。守护进程还可以与其他守护进程通信来管理Docker服务。
(2)Docker 客户端(Client)
Docker客户端(Docker)是Docker用户与Docker交互的主要方式。当你使用像docker run这样的命令时,客户端将这些命令发送给dockerd,由dockerd执行它们。docker命令会使用到docker API。Docker客户端可以与多个守护进程通信。
(3)Docker 仓库(registry)
Docker Registry存储Docker镜像。在这些Registry中,Docker Hub是一个任何人都可以使用的公共注册中心,默认情况下,Docker被配置为在Docker Hub上查找镜像。您甚至可以运行自己的私有Registry。当你使用docker pull或docker run命令时,所需的镜像会从你配置的Registry中提取出来。当你使用docker push命令时,你的镜像会被推送到你配置的Registry中。Registry包含很多个Repository,例如,我们可以在Docker hub上查看其下的Repository,它们通常按用户、镜像中的程序划分。
Docker安装步骤如下:
(1)如果已经安装旧版,可以卸载:
yum remove docker docker-common docker-selinux docker-engine
(2)安装基础依赖
yum install -y yum-utils device-mapper-persistent-data lvm2
(3)增加docker yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
(4)如果连接不上,可以使用以下中国科学技术大学的yum源
yum-config-manager --add-repo https://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo
(5)如果报错,删除对应文件
cd /etc/yum.repos.d/
删除mirrors.ustc.edu.cn相关文件后再增加yum源。
(6)查看docker版本
yum list docker-ce --showduplicates
(7)安装docker
yum install -y docker-ce
(8)如果需要安装指定版本,如下
yum install -y docker-ce-18.06.3.ce
(9)启动docker
systemctl start docker
(10)设置开机启动docker
systemctl enable docker
(11)验证安装
>>本文地址:https://www.ujiuye.com/zhuanye/2021/69754.html
声明:本站稿件版权均属中公教育优就业所有,未经许可不得擅自转载。
1 您的年龄
2 您的学历
3 您更想做哪个方向的工作?