偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

Docker虛擬化技術(shù)概述及部署安裝

云計(jì)算 虛擬化
通俗的說,虛擬化就是把物理資源轉(zhuǎn)變?yōu)檫壿嬌峡梢怨芾淼馁Y源,以打破物理結(jié)構(gòu)間的壁壘,計(jì)算元件運(yùn)行在虛擬的基礎(chǔ)上而不是真實(shí)的基礎(chǔ)上,可以擴(kuò)大硬件的容量,簡化軟件的重新配置過程。

一、虛擬化概述及簡介

通俗的說,虛擬化就是把物理資源轉(zhuǎn)變?yōu)檫壿嬌峡梢怨芾淼馁Y源,以打破物理結(jié)構(gòu)間的壁壘,計(jì)算元件運(yùn)行在虛擬的基礎(chǔ)上而不是真實(shí)的基礎(chǔ)上,可以擴(kuò)大硬件的容量,簡化軟件的重新配置過程。

[[266637]]

允許一個(gè)平臺同時(shí)運(yùn)行多個(gè)操作系統(tǒng),并且應(yīng)用程序都可以在相互獨(dú)立的空間內(nèi)運(yùn)行而互不影響,從而顯著提高計(jì)算機(jī)的工作效率,是一個(gè)為了簡化管理,優(yōu)化資源的解決方案。

目前主流的虛擬化技術(shù)主要有:KVM、Xen、VMware、VirtualBox、Docker,虛擬化技術(shù)也越來越廣泛的應(yīng)用在企業(yè)中,例如Taobao、Google等。

虛擬化原理:虛擬化解決方案的底部是要進(jìn)行虛擬化的物理機(jī)器。這臺機(jī)器可能直接支持虛擬化,也可能不會直接支持虛擬化;那么就需要系統(tǒng)管理程序?qū)拥闹С?。系統(tǒng)管理程序(Virtual machine monitor),或稱為 VMM,可以看作是平臺硬件和操作系統(tǒng)的抽象化。在某些情況中,這個(gè)系統(tǒng)管理程序就是一個(gè)操作系統(tǒng);此時(shí),它就稱為主機(jī)操作系統(tǒng)。

圖 1. 虛擬化的分層抽象

高級運(yùn)維篇:Docker虛擬化技術(shù)概述及部署安裝

完全擬化技術(shù)實(shí)際上是通過軟件實(shí)現(xiàn)對操作系統(tǒng)的資源再分配,比較成熟,例如我們的KVM、virtualBOX;

而半虛擬化技術(shù)則是通過代碼修改已有的系統(tǒng),形成一種新的可虛擬化的系統(tǒng),調(diào)用硬件資源去安裝多個(gè)系統(tǒng),整體速度上相對高一點(diǎn),代表產(chǎn)品有Xen。

二、Docker入門簡介

Docker 是一個(gè)開源的應(yīng)用容器引擎,讓開發(fā)者可以打包他們的應(yīng)用以及依賴包到一個(gè)可移植的容器中,然后發(fā)布到任何流行的Linux機(jī)器上,也可以實(shí)現(xiàn)虛擬化。

容器是完全使用沙箱機(jī)制,相互之間不會有任何接口(類似 iPhone 的 app)。幾乎沒有性能開銷,可以很容易地在機(jī)器和數(shù)據(jù)中心中運(yùn)行。最重要的是,他們不依賴于任何語言、框架或包括系統(tǒng)。

"Docker"應(yīng)該是2014年最火爆的技術(shù)之一,如果沒有聽說過,那么你就out了,2015年將開啟新的跨越。

Docker 自開源后受到廣泛的關(guān)注和討論,以至于 dotCloud 公司后來都改名為 Docker Inc。Redhat 已經(jīng)在其 RHEL6.5 中集中支持 Docker;Google 也在其 PaaS 產(chǎn)品中廣泛應(yīng)用。

Docker 項(xiàng)目的目標(biāo)是實(shí)現(xiàn)輕量級的操作系統(tǒng)虛擬化解決方案。 Docker 的基礎(chǔ)是 Linux 容器(LXC)等技術(shù)。

在 LXC 的基礎(chǔ)上 Docker 進(jìn)行了進(jìn)一步的封裝,讓用戶不需要去關(guān)心容器的管理,使得操作更為簡便。用戶操作 Docker 的容器就像操作一個(gè)快速輕量級的虛擬機(jī)一樣簡單。

下面對比了Docker 和傳統(tǒng)虛擬化(KVM、XEN等)方式的不同之處,Docker容器是在操作系統(tǒng)層面上實(shí)現(xiàn)虛擬化,直接復(fù)用本地主機(jī)的操作系統(tǒng),而傳統(tǒng)方式則是在硬件的基礎(chǔ)上,虛擬出自己的系統(tǒng),再在系統(tǒng)上部署相關(guān)的APP應(yīng)用。

虛擬化要運(yùn)行一下Nginx軟件

下圖為傳統(tǒng)虛擬化方案: 

高級運(yùn)維篇:Docker虛擬化技術(shù)概述及部署安裝

如下為Docker虛擬化方案: 

高級運(yùn)維篇:Docker虛擬化技術(shù)概述及部署安裝

三、Docker虛擬化有三個(gè)概念需要理解,分別鏡像、容器、倉庫。

鏡像:docker的鏡像其實(shí)就是模板,跟我們常見的ISO鏡像類似,是一個(gè)樣板。

容器:使用鏡像常見的應(yīng)用或者系統(tǒng),我們稱之為一個(gè)容器。

倉庫:倉庫是存放鏡像的地方,分為公開倉庫(Public)和私有倉庫(Private)兩種形式。

Docker LXC及Cgroup

Docker最早為 LXC+AUFS組合,Docker0.9.0版本開始引入libcontainer,可以視作LXC的替代品)。其中LXC負(fù)責(zé)資源管理,AUFS負(fù)責(zé)鏡像管理;而LXC包括cgroup、namespace、chroot等組件,并通過cgroup進(jìn)行資源管理。

從資源管理來看,Docker、LXC、Cgroup三者的關(guān)系是:Cgroup在***層落實(shí)資源管理,LXC在cgroup上封裝了一層,Docker又在LXC封裝了一層,要想學(xué)好Docker,需要了解負(fù)責(zé)資源管理的CGroup和LXC。 

高級運(yùn)維篇:Docker虛擬化技術(shù)概述及部署安裝

Cgroups是control groups的縮寫,是Linux內(nèi)核提供的一種可以限制、記錄、隔離進(jìn)程組(process groups)所使用的物理資源(如:CPU, Memory, IO等)的機(jī)制。

最初由Google的工程師提出,后來被整合進(jìn)Linux內(nèi)核。Cgroups也是LXC為實(shí)現(xiàn)虛擬化所使用的資源管理手段,可以說沒有Cgroups就沒有LXC,也就沒有Docker。

Cgroups最初的目標(biāo)是為資源管理提供的一個(gè)統(tǒng)一的框架,既整合現(xiàn)有的Cpuset等子系統(tǒng),也為未來開發(fā)新的子系統(tǒng)提供接口?,F(xiàn)在的Cgroups適用于多種應(yīng)用場景,從單個(gè)進(jìn)程的資源控制,到實(shí)現(xiàn)操作系統(tǒng)層次的虛擬化(OS Level Virtualization)。

LinuxContainer容器可以提供輕量級的虛擬化,以便隔離進(jìn)程和資源,而且不需要提供指令解釋機(jī)制以及全虛擬化的其他復(fù)雜性。容器有效地將由單個(gè)操作系統(tǒng)管理的資源劃分到孤立的組中,以更好地在孤立的組之間平衡有沖突的資源使用需求。

LXC建立在CGroup基礎(chǔ)上,我們可以粗略的認(rèn)為LXC = Cgroup+ namespace + Chroot + veth +用戶態(tài)控制腳本。LXC利用內(nèi)核的新特性(CGroup)來提供用戶空間的對象,用來保證資源的隔離和對于應(yīng)用或者系統(tǒng)的資源控制。

典型的Linux文件系統(tǒng)由bootfs和rootfs兩部分組成,bootfs(boot file system)主要包含 bootloader和kernel,bootloader主要是引導(dǎo)加載kernel,當(dāng)kernel被加載到內(nèi)存中后 bootfs就被umount。rootfs (root file system) 包含的就是典型 Linux 系統(tǒng)中的/dev,/proc,/bin,/etc等標(biāo)準(zhǔn)目錄和文件。 

[[266639]]

Docker容器的文件系統(tǒng)最早是建立在Aufs基礎(chǔ)上的,Aufs(Another Union File System)是一種Union FS, 簡單來說就是支持將不同的目錄掛載到同一個(gè)虛擬文件系統(tǒng)下,并實(shí)現(xiàn)一種layer的概念。

由于Aufs未能加入到Linux內(nèi)核,考慮到兼容性問題,加入了Devicemapper的支持。Docker目前默認(rèn)運(yùn)行在Devicemapper基礎(chǔ)上。

Aufs將掛載到同一虛擬文件系統(tǒng)下的多個(gè)目錄分別設(shè)置成read-only,read-write以及whiteout-able權(quán)限,對read-only目錄只能讀,而寫操作只能實(shí)施在read-write目錄中。重點(diǎn)在于,寫操作是在read-only上的一種增量操作,不影響read-only目錄。當(dāng)掛載目錄的時(shí)候要嚴(yán)格按照各目錄之間的這種增量關(guān)系,將被增量操作的目錄優(yōu)先于在它基礎(chǔ)上增量操作的目錄掛載,待所有目錄掛載結(jié)束了,繼續(xù)掛載一個(gè)read-write目錄,如此便形成了一種層次結(jié)構(gòu)。

傳統(tǒng)的Linux加載bootfs時(shí)會先將rootfs設(shè)為read-only,然后在系統(tǒng)自檢之后將rootfs從read-only改為read-write,然后我們就可以在rootfs上進(jìn)行寫和讀的操作了。但Docker的鏡像卻不是這樣,它在bootfs自檢完畢之后并不會把rootfs的read-only改為read-write。而是利用union mount(UnionFS的一種掛載機(jī)制)將一個(gè)或多個(gè)read-only的rootfs加載到之前的read-only的rootfs層之上。

在加載了這么多層的rootfs之后,仍然讓它看起來只像是一個(gè)文件系統(tǒng),在Docker的體系里把union mount的這些read-only的rootfs叫做Docker的鏡像。但是,此時(shí)的每一層rootfs都是read-only的,我們此時(shí)還不能對其進(jìn)行操作。當(dāng)我們創(chuàng)建一個(gè)容器,也就是將Docker鏡像進(jìn)行實(shí)例化,系統(tǒng)會在一層或是多層read-only的rootfs之上分配一層空的read-write的rootfs。 

高級運(yùn)維篇:Docker虛擬化技術(shù)概述及部署安裝

Device Mapper 是 Linux2.6 內(nèi)核中支持邏輯卷管理的通用設(shè)備映射機(jī)制,它為實(shí)現(xiàn)用于存儲資源管理的塊設(shè)備驅(qū)動提供了一個(gè)高度模塊化的內(nèi)核架構(gòu),Device Mapper的內(nèi)核體系架構(gòu): 

高級運(yùn)維篇:Docker虛擬化技術(shù)概述及部署安裝

在內(nèi)核中它通過一個(gè)一個(gè)模塊化的 target driver 插件實(shí)現(xiàn)對 IO 請求的過濾或者重新定向等工作,當(dāng)前已經(jīng)實(shí)現(xiàn)的 target driver 插件包括軟 raid、軟加密、邏輯卷?xiàng)l帶、多路徑、鏡像、快照等,圖中 linear、mirror、snapshot、multipath 表示的就是這些 target driver。Device mapper 進(jìn)一步體現(xiàn)了在 Linux 內(nèi)核設(shè)計(jì)中策略和機(jī)制分離的原則,將所有與策略相關(guān)的工作放到用戶空間完成,內(nèi)核中主要提供完成這些策略所需要的機(jī)制。

Device mapper 用戶空間相關(guān)部分主要負(fù)責(zé)配置具體的策略和控制邏輯,比如邏輯設(shè)備和哪些物理設(shè)備建立映射,怎么建立這些映射關(guān)系等等,而具體過濾和重定向 IO 請求的工作由內(nèi)核中相關(guān)代碼完成。因此整個(gè) device mapper 機(jī)制由兩部分組成--內(nèi)核空間的 device mapper 驅(qū)動、用戶空間的device mapper 庫以及它提供的 dmsetup 工具。

四、Docker虛擬化特點(diǎn)

跟傳統(tǒng)VM比較具有如下優(yōu)點(diǎn):

操作啟動快

運(yùn)行時(shí)的性能可以獲取極大提升,管理操作(啟動,停止,開始,重啟等等) 都是以秒或毫秒為單位的。

輕量級虛擬化

你會擁有足夠的"操作系統(tǒng)",僅需添加或減小鏡像即可。在一臺服務(wù)器上可以布署100~1000個(gè)Containers容器。但是傳統(tǒng)虛擬化,你虛擬10-20個(gè)虛擬機(jī)就不錯(cuò)了。

開源免費(fèi)

開源的,免費(fèi)的,低成本的。由現(xiàn)代Linux內(nèi)核支持并驅(qū)動。注* 輕量的Container必定可以在一個(gè)物理機(jī)上開啟更多"容器",注定比VMs要便宜。

前景及云支持

正在越來越受歡迎,包括各大主流公司都在推動docker的快速發(fā)展,性能有很大的優(yōu)勢。

跟傳統(tǒng)VM比較具有如下缺點(diǎn):

  • 目前知道的人比較少;
  • 相關(guān)的技術(shù)資料欠缺;
  • Go語言還沒完全成熟。

五、為什么使用Docker

Docker 在如下幾個(gè)方面具有較大的優(yōu)勢:

更快速的交付和部署

Docker在整個(gè)開發(fā)周期都可以***的輔助你實(shí)現(xiàn)快速交付。Docker允許開發(fā)者在裝有應(yīng)用和服務(wù)本地容器做開發(fā)??梢灾苯蛹傻娇沙掷m(xù)開發(fā)流程中。

開發(fā)者可以使用一個(gè)標(biāo)準(zhǔn)的鏡像來構(gòu)建一套開發(fā)容器,開發(fā)完成之后,運(yùn)維人員可以直接使用這個(gè)容器來部署代碼。 Docker 可以快速創(chuàng)建容器,快速迭代應(yīng)用程序,并讓整個(gè)過程全程可見,使團(tuán)隊(duì)中的其他成員更容易理解應(yīng)用程序是如何創(chuàng)建和工作的。 Docker 容器很輕很快!容器的啟動時(shí)間是秒級的,大量地節(jié)約開發(fā)、測試、部署的時(shí)間。

高效的部署和擴(kuò)容

Docker 容器幾乎可以在任意的平臺上運(yùn)行,包括物理機(jī)、虛擬機(jī)、公有云、私有云、個(gè)人電腦、服務(wù)器等。 這種兼容性可以讓用戶把一個(gè)應(yīng)用程序從一個(gè)平臺直接遷移到另外一個(gè)。

Docker的兼容性和輕量特性可以很輕松的實(shí)現(xiàn)負(fù)載的動態(tài)管理。你可以快速擴(kuò)容或方便的下線的你的應(yīng)用和服務(wù),這種速度趨近實(shí)時(shí)。

更高的資源利用率

Docker 對系統(tǒng)資源的利用率很高,一臺主機(jī)上可以同時(shí)運(yùn)行數(shù)千個(gè) Docker 容器。容器除了運(yùn)行其中應(yīng)用外,基本不消耗額外的系統(tǒng)資源,使得應(yīng)用的性能很高,同時(shí)系統(tǒng)的開銷盡量小。傳統(tǒng)虛擬機(jī)方式運(yùn)行 10 個(gè)不同的應(yīng)用就要起 10 個(gè)虛擬機(jī),而Docker 只需要啟動 10 個(gè)隔離的應(yīng)用即可。

更簡單的管理

使用 Docker,只需要小小的修改,就可以替代以往大量的更新工作。所有的修改都以增量的方式被分發(fā)和更新,從而實(shí)現(xiàn)自動化并且高效的管理。

Docker引擎架構(gòu)

docker引擎是一個(gè)C/S結(jié)構(gòu)的應(yīng)用,組件如圖所示: 

高級運(yùn)維篇:Docker虛擬化技術(shù)概述及部署安裝
  • Server是一個(gè)常駐進(jìn)程;
  • REST API 實(shí)現(xiàn)了client和server間的交互協(xié)議;
  • CLI 實(shí)現(xiàn)容器和鏡像的管理,為用戶提供統(tǒng)一的操作界面。

Docker使用C/S架構(gòu),Client 通過接口與Server進(jìn)程通信實(shí)現(xiàn)容器的構(gòu)建,運(yùn)行和發(fā)布。client和server可以運(yùn)行在同一臺集群,也可以通過跨主機(jī)實(shí)現(xiàn)遠(yuǎn)程通信,架構(gòu)如圖所示: 

高級運(yùn)維篇:Docker虛擬化技術(shù)概述及部署安裝

實(shí)戰(zhàn)操作如下:

六、Docker安裝配置

系統(tǒng)環(huán)境:Centos7.4(docker官方文檔說要求Linux kernel至少3.8以上),執(zhí)行以下命令

  1. [root@localhost ~]# yum -y install docker 
高級運(yùn)維篇:Docker虛擬化技術(shù)概述及部署安裝

安裝完后:

啟動docker進(jìn)程:systemctl start docker.service

查看docker進(jìn)程: ps -ef | grep docker 

高級運(yùn)維篇:Docker虛擬化技術(shù)概述及部署安裝

Docker簡單使用

要使用docker虛擬化,首先我們需要去下載一個(gè)鏡像,然后使用docker命令啟動

1)下載鏡像

  1. [root@localhost ~]# docker search centos 
  2. [root@localhost ~]# docker pull centos 

高級運(yùn)維篇:Docker虛擬化技術(shù)概述及部署安裝

2)啟動Docker容器 

高級運(yùn)維篇:Docker虛擬化技術(shù)概述及部署安裝

3)進(jìn)入容器

  1. [root@localhost ~]# docker exec -it f48a681da213 /bin/bash 

高級運(yùn)維篇:Docker虛擬化技術(shù)概述及部署安裝

高級運(yùn)維篇:Docker虛擬化技術(shù)概述及部署安裝
七、Docker常用命令講解

docker version #查看版本

docker search centos #搜索可用docker鏡像

docker images #查看當(dāng)前docker所有鏡像

docker pull centos #下載鏡像

cat centos.tar | docker import - centos6_newname #Docker導(dǎo)入鏡像

docker export 容器_id > cenos6.tar #Docker導(dǎo)出鏡像

docker run centos echo "hello word" #在docker容器中運(yùn)行hello world!

docker run centos yum install ntpdate #在容器中安裝ntpdate的程序

docker ps -l #命令獲得***一個(gè)容器的id

docker ps -a #查看所有的容器。

運(yùn)行docker commit 提交剛修改的容器,例如:

docker commit 2313132 centos:v1

docker run -i –t -d centos /bin/bash 在容器里啟動一個(gè)/bin/bash shell環(huán)境,可以登錄進(jìn)入操作,其中-t 表示打開一個(gè)終端的意思,-i表示可以交互輸入。

docker run -d centos:v1 /bin/bash ,-d表示在后臺啟動,以daemon方式啟動。

Docker stop id #關(guān)閉容器

Docker start id #啟動某個(gè)容器

docker rm id #刪除容器

docker rmi images #刪除鏡像

docker run -d -p 80:80 -p 8022:22 centos:v2,解析:-p指定容器啟動后docker上運(yùn)行的端口映射及容器里運(yùn)行的端口,80:80,***個(gè)80表示docker系統(tǒng)上的80,第二個(gè)80表示docker虛擬機(jī)里面的端口。用戶默認(rèn)訪問本機(jī)80端口,自動映射到容器里面的80端口。

docker exec -it id /bin/bash #進(jìn)入容器

責(zé)任編輯:武曉燕 來源: 今日頭條
相關(guān)推薦

2015-09-09 17:25:06

2015-04-17 10:48:49

Docker虛擬化

2021-06-17 13:28:20

NFV虛擬化服務(wù)器

2009-03-03 20:44:06

桌面虛擬化Xendesktop虛擬化

2022-04-12 14:11:27

存儲虛擬化軟件定義服務(wù)器

2009-07-31 13:16:21

IronRuby

2010-04-08 15:40:16

Windows組策略

2014-09-16 10:34:59

Docker達(dá)龍?jiān)?/a>

2014-09-17 15:44:42

DockerContainer虛擬化

2016-01-27 13:28:00

虛擬化

2014-11-04 15:29:00

KubernetesDocker

2010-12-06 14:37:27

服務(wù)器虛擬化

2009-08-05 18:53:03

標(biāo)準(zhǔn)查詢操作符

2009-08-28 15:07:31

C#線程

2009-12-30 16:01:32

Linux性能

2009-07-20 14:14:03

PowerDesign

2009-09-04 18:00:54

C# Main方法

2018-06-20 14:34:03

2013-03-18 10:12:25

存儲虛擬化虛擬化技術(shù)

2010-04-07 13:30:41

IO虛擬化
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號