IT培訓(xùn)網(wǎng)
IT在線學(xué)習(xí)
當(dāng)前,虛擬化技術(shù)在互聯(lián)網(wǎng)后端應(yīng)用非常廣泛,它可以優(yōu)化資源利用、方便跨域共享、實(shí)現(xiàn)資源隔離。對(duì)于企業(yè)中的測(cè)試人員來(lái)說(shuō),也不可避免地會(huì)接觸到,所以有必要加深對(duì)它的了解和熟悉。當(dāng)測(cè)試人員職業(yè)技能發(fā)展到自動(dòng)化測(cè)試、測(cè)試開(kāi)發(fā)層次,相應(yīng)的工作也很可能會(huì)從寫(xiě)腳本、搭建框架,升級(jí)到開(kāi)發(fā)測(cè)試平臺(tái),如何高效地實(shí)現(xiàn)測(cè)試平臺(tái)的部署、維護(hù),也成為測(cè)試人員需要面對(duì)的一個(gè)問(wèn)題。本文就從Docker的原理開(kāi)始,介紹一下Docker容器化技術(shù)在測(cè)試平臺(tái)部署中的應(yīng)用。
虛擬化常用的技術(shù)形式,有主機(jī)級(jí)虛擬化和容器級(jí)虛擬化兩種形式。
我們通常使用的虛擬機(jī)(如VMWare WorkStation),就是典型的主機(jī)級(jí)虛擬化的形式。在宿主機(jī)硬件平臺(tái)上,先安裝宿主機(jī)操作系統(tǒng),然后在操作系統(tǒng)中安裝虛擬機(jī)管理器。在這個(gè)虛擬機(jī)管理器的基礎(chǔ)之上,可以虛擬出多個(gè)硬件平臺(tái)(如果你的電腦資源足夠),然后每個(gè)硬件平臺(tái)上再安裝自己的操作系統(tǒng)內(nèi)核,構(gòu)造自己的用戶空間。這種情況下,不同虛擬機(jī)之間的隔離性是非常好的,但過(guò)于重量級(jí),消耗大量軟硬件資源。
Linux內(nèi)核的不斷演進(jìn),使容器級(jí)虛擬化成為現(xiàn)實(shí)。容器級(jí)虛擬化,在宿主機(jī)硬件平臺(tái)的Linux操作系統(tǒng)中,增加一個(gè)隔離環(huán)境管理器,借助這個(gè)隔離環(huán)境管理器,直接分出若干個(gè)用戶空間。這些用戶空間中部分資源共享,其他資源則實(shí)現(xiàn)徹底的隔離。
容器級(jí)虛擬化,是借助于Linux內(nèi)核的三大技術(shù)來(lái)實(shí)現(xiàn)的。這三大技術(shù)就是Chroot、名稱(chēng)空間和CGroups。
Chroot是操作系統(tǒng)級(jí)的虛擬機(jī),它可以將指定位置作為/根目錄,將程序運(yùn)行限制在指定根目錄中,從而實(shí)現(xiàn)操作系統(tǒng)中虛擬出多個(gè)根目錄,實(shí)現(xiàn)了可視化的隔離。
名稱(chēng)空間總共有Mount(文件系統(tǒng))、UTS(主機(jī)名、域名)、IPC(信號(hào)量、消息隊(duì)列、共享內(nèi)存)、PID(進(jìn)程編號(hào))、NetWork(網(wǎng)絡(luò)設(shè)備、網(wǎng)絡(luò)棧、端口等)、User(用戶、用戶組)六個(gè)。從Linux2.4.19開(kāi)始,直到3.8版本,依次實(shí)現(xiàn)了對(duì)這六個(gè)名稱(chēng)空間的隔離。
CGroups,用來(lái)為隔離的用戶空間按比例分配CPU、內(nèi)存等資源。
在以上技術(shù)的支撐下,通過(guò)系統(tǒng)調(diào)用,即可實(shí)現(xiàn)容器級(jí)虛擬化。但對(duì)普通用戶來(lái)說(shuō),系統(tǒng)調(diào)用難度太大,于是在Sourceforge上產(chǎn)生了一個(gè)叫做LXC的項(xiàng)目。LXC是LinuX Container的簡(jiǎn)稱(chēng),它通過(guò)二次開(kāi)發(fā),把系統(tǒng)調(diào)用和操作封裝成了一組工具。它最早把完整的容器技術(shù)用一組工具和模板實(shí)現(xiàn)。但它也存在一些問(wèn)題,如模板需要高度定制,文件和數(shù)據(jù)遷移困難,對(duì)容器批量創(chuàng)建的支持有限,隔離性不夠好。于是,在2013年初,在LXC基礎(chǔ)上,dotCloud公司推出了開(kāi)源項(xiàng)目Docker,讓用戶不用關(guān)心容器內(nèi)部的管理,操作更加簡(jiǎn)捷。
Docker不是容器,容器是Linux內(nèi)核支持的功能,而Docker是容器化的簡(jiǎn)化工具。Docker通過(guò)鏡像技術(shù) ,把用戶空間所需文件整體編排好,打包成鏡像文件,放在一個(gè)集中的倉(cāng)庫(kù)。生成用戶空間時(shí),連到服務(wù)器上,找到鏡像,拖到本地,基于鏡像啟動(dòng)容器。這極大地降低了容器的使用難度。在一個(gè)容器中只運(yùn)行一個(gè)主進(jìn)程,進(jìn)程終止,容器終止。分發(fā)部署容易,真正實(shí)現(xiàn)了“一次編寫(xiě)到處運(yùn)行”。
Docker架構(gòu)如下:
(1)Docker 守護(hù)進(jìn)程(Daemon)
Docker守護(hù)進(jìn)程(dockerd)監(jiān)聽(tīng)Docker API請(qǐng)求,并管理Docker對(duì)象,如鏡像(Images)、容器(Containers)、網(wǎng)絡(luò)(Networks)和卷(Volumes)。守護(hù)進(jìn)程還可以與其他守護(hù)進(jìn)程通信來(lái)管理Docker服務(wù)。
(2)Docker 客戶端(Client)
Docker客戶端(Docker)是Docker用戶與Docker交互的主要方式。當(dāng)你使用像docker run這樣的命令時(shí),客戶端將這些命令發(fā)送給dockerd,由dockerd執(zhí)行它們。docker命令會(huì)使用到docker API。Docker客戶端可以與多個(gè)守護(hù)進(jìn)程通信。
(3)Docker 倉(cāng)庫(kù)(registry)
Docker Registry存儲(chǔ)Docker鏡像。在這些Registry中,Docker Hub是一個(gè)任何人都可以使用的公共注冊(cè)中心,默認(rèn)情況下,Docker被配置為在Docker Hub上查找鏡像。您甚至可以運(yùn)行自己的私有Registry。當(dāng)你使用docker pull或docker run命令時(shí),所需的鏡像會(huì)從你配置的Registry中提取出來(lái)。當(dāng)你使用docker push命令時(shí),你的鏡像會(huì)被推送到你配置的Registry中。Registry包含很多個(gè)Repository,例如,我們可以在Docker hub上查看其下的Repository,它們通常按用戶、鏡像中的程序劃分。
Docker安裝步驟如下:
(1)如果已經(jīng)安裝舊版,可以卸載:
yum remove docker docker-common docker-selinux docker-engine
(2)安裝基礎(chǔ)依賴(lài)
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)如果連接不上,可以使用以下中國(guó)科學(xué)技術(shù)大學(xué)的yum源
yum-config-manager --add-repo https://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo
(5)如果報(bào)錯(cuò),刪除對(duì)應(yīng)文件
cd /etc/yum.repos.d/
刪除mirrors.ustc.edu.cn相關(guān)文件后再增加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)啟動(dòng)docker
systemctl start docker
(10)設(shè)置開(kāi)機(jī)啟動(dòng)docker
systemctl enable docker
(11)驗(yàn)證安裝
>>本文地址:http://liujunjsxg.cn/zhuanye/2021/69754.html
聲明:本站稿件版權(quán)均屬中公教育優(yōu)就業(yè)所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
1 您的年齡
2 您的學(xué)歷
3 您更想做哪個(gè)方向的工作?
07月15日Java
咨詢/試聽(tīng)07月15日Python+人工智能
咨詢/試聽(tīng)07月15日Web前端
咨詢/試聽(tīng)07月15日UI設(shè)計(jì)
咨詢/試聽(tīng)07月15日大數(shù)據(jù)
咨詢/試聽(tīng)07月15日Java
咨詢/試聽(tīng)07月15日Python+人工智能
咨詢/試聽(tīng)07月15日Web前端
咨詢/試聽(tīng)07月15日UI設(shè)計(jì)
咨詢/試聽(tīng)07月15日大數(shù)據(jù)
咨詢/試聽(tīng)