溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

Docker容器定義工具有哪些

發(fā)布時(shí)間:2021-12-13 15:23:43 來(lái)源:億速云 閱讀:240 作者:iii 欄目:大數(shù)據(jù)

本篇內(nèi)容介紹了“Docker容器定義工具有哪些”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

1、容器規(guī)范

容器不光是 Docker,還有其他容器,比如 CoreOS 的 rkt。為了保證容器生態(tài)的健康發(fā)展,保證不同容器之間能夠兼容,包含 Docker、CoreOS、Google在內(nèi)的若干公司共同成立了一個(gè)叫 Open Container Initiative(OCI) 的組織,其目是制定開(kāi)放的容器規(guī)范。

2、容器 runtime

runtime 是容器真正運(yùn)行的地方。runtime 需要跟操作系統(tǒng) kernel 緊密協(xié)作,為容器提供運(yùn)行環(huán)境。

  • lxc、runc 和 rkt 是目前主流的三種容器 runtime。

  • lxc 是 Linux 上老牌的容器 runtime。Docker 最初也是用 lxc 作為 runtime。

  • runc 是 Docker 自己開(kāi)發(fā)的容器 runtime,符合 oci 規(guī)范,也是現(xiàn)在 Docker 的默認(rèn) runtime。

  • rkt 是 CoreOS 開(kāi)發(fā)的容器 runtime,符合 oci 規(guī)范,因而能夠運(yùn)行 Docker 的容器。

3、容器管理工具

光有 runtime 還不夠,用戶(hù)得有工具來(lái)管理容器啊。容器管理工具對(duì)內(nèi)與 runtime 交互,對(duì)外為用戶(hù)提供 interface,比如 CLI。這就好比除了 JVM,還得提供 java 命令讓用戶(hù)能夠啟停應(yīng)用不是。

  • lxd 是 lxc 對(duì)應(yīng)的管理工具。

  • runc 的管理工具是 docker engine。docker engine 包含后臺(tái) deamon 和 cli 兩個(gè)部分。我們通常提到 Docker,一般就是指的 docker engine。

  • rkt 的管理工具是 rkt cli。

4、容器定義工具

容器定義工具允許用戶(hù)定義容器的內(nèi)容和屬性,這樣容器就能夠被保存,共享和重建。

  • docker image 是 docker 容器的模板,runtime 依據(jù) docker image 創(chuàng)建容器。

  • dockerfile 是包含若干命令的文本文件,可以通過(guò)這些命令創(chuàng)建出 docker image。

  • ACI (App Container Image) 與 docker image 類(lèi)似,只不過(guò)它是由 CoreOS 開(kāi)發(fā)的 rkt 容器的 image 格式。

5、Registry

容器是通過(guò) image 創(chuàng)建的,需要有一個(gè)倉(cāng)庫(kù)來(lái)統(tǒng)一存放 image,這個(gè)倉(cāng)庫(kù)就叫做 Registry。

  • Docker Hub(https://hub.docker.com) 是 Docker 為公眾提供的托管 Registry,上面有很多現(xiàn)成的 image,為 Docker 用戶(hù)提供了極大的便利。

  • Quay.io(https://quay.io/)是另一個(gè)公共托管 Registry,提供與 Docker Hub 類(lèi)似的服務(wù)。

6、容器 OS

由于有容器 runtime,幾乎所有的 Linux、MAC OS 和 Windows 都可以運(yùn)行容器。但這不并沒(méi)有妨礙容器 OS 的問(wèn)世。

容器 OS 是專(zhuān)門(mén)運(yùn)行容器的操作系統(tǒng)。與常規(guī) OS 相比,容器 OS 通常體積更小,啟動(dòng)更快。因?yàn)槭菫槿萜鞫ㄖ频?OS,通常它們運(yùn)行容器的效率會(huì)更高。

目前已經(jīng)存在不少容器 OS,CoreOS、atomic 和 ubuntu core 是其中的杰出代表。

二、說(shuō)說(shuō)容器    

1、什么是容器

容器是一種輕量級(jí)、可移植、自包含的軟件打包技術(shù),使應(yīng)用程序可以在幾乎任何地方以相同的方式運(yùn)行。開(kāi)發(fā)人員在自己筆記本上創(chuàng)建并測(cè)試好的容器,無(wú)需任何修改就能夠在生產(chǎn)系統(tǒng)的虛擬機(jī)、物理服務(wù)器或公有云主機(jī)上運(yùn)行。

Containers vs. virtual machines

容器在 Host 操作系統(tǒng)的用戶(hù)空間中運(yùn)行,與操作系統(tǒng)的其他進(jìn)程隔離。這一點(diǎn)顯著區(qū)別于的虛擬機(jī)。

傳統(tǒng)的虛擬化技術(shù),比如 VMWare, KVM, Xen,目標(biāo)是創(chuàng)建完整的虛擬機(jī)。為了運(yùn)行應(yīng)用,除了部署應(yīng)用本身及其依賴(lài)(通常幾十 MB),還得安裝整個(gè)操作系統(tǒng)(幾 GB)。

Docker容器定義工具有哪些

虛擬機(jī)和容器的區(qū)別

由于所有的容器共享同一個(gè) Host OS,這使得容器在體積上要比虛擬機(jī)小很多。另外,啟動(dòng)容器不需要啟動(dòng)整個(gè)操作系統(tǒng),所以容器部署和啟動(dòng)速度更快,開(kāi)銷(xiāo)更小,也更容易遷移。

2、為什么使用容器

如今的系統(tǒng)在架構(gòu)上較十年前已經(jīng)變得非常復(fù)雜了。以前幾乎所有的應(yīng)用都采用三層架構(gòu)(Presentation/Application/Data),系統(tǒng)部署到有限的幾臺(tái)物理服務(wù)器上(Web Server/Application Server/Database Server)。

而今天,開(kāi)發(fā)人員通常使用多種服務(wù)(比如 MQ,Cache,DB)構(gòu)建和組裝應(yīng)用,而且應(yīng)用很可能會(huì)部署到不同的環(huán)境,比如虛擬服務(wù)器,私有云和公有云。

一方面應(yīng)用包含多種服務(wù),這些服務(wù)有自己所依賴(lài)的庫(kù)和軟件包;另一方面存在多種部署環(huán)境,服務(wù)在運(yùn)行時(shí)可能需要?jiǎng)討B(tài)遷移到不同的環(huán)境中。這就產(chǎn)生了一個(gè)問(wèn)題:

如何讓每種服務(wù)能夠在所有的部署環(huán)境中順利運(yùn)行?

聰明的技術(shù)人員從傳統(tǒng)的運(yùn)輸行業(yè)找到了答案。

幾十年前,運(yùn)輸業(yè)面臨著類(lèi)似的問(wèn)題。

每一次運(yùn)輸,貨主與承運(yùn)方都會(huì)擔(dān)心因貨物類(lèi)型的不同而導(dǎo)致?lián)p失,比如幾個(gè)鐵桶錯(cuò)誤地壓在了一堆香蕉上。另一方面,運(yùn)輸過(guò)程中需要使用不同的交通工具也讓整個(gè)過(guò)程痛苦不堪:貨物先裝上車(chē)運(yùn)到碼頭,卸貨,然后裝上船,到岸后又卸下船,再裝上火車(chē),到達(dá)目的地,最后卸貨。一半以上的時(shí)間花費(fèi)在裝、卸貨上,而且搬上搬下還容易損壞貨物。

幸運(yùn)的是,集裝箱的發(fā)明解決這個(gè)難題。

打一個(gè)比方,集裝箱(容器)對(duì)于遠(yuǎn)洋運(yùn)輸(應(yīng)用運(yùn)行)來(lái)說(shuō)十分重要。集裝箱(容器)能保護(hù)貨物(應(yīng)用),讓其不會(huì)相互碰撞(應(yīng)用沖突)而損壞,也能保障當(dāng)一些危險(xiǎn)貨物發(fā)生規(guī)模不大的爆炸(應(yīng)用崩潰)時(shí)不會(huì)波及其它貨物(應(yīng)用)但是把貨物(應(yīng)用)裝載在集裝箱(容器)中并不是一件簡(jiǎn)單的事情。而出色的碼頭工人(Docker)的出現(xiàn)解決了這一問(wèn)題。它(Docker)使得貨物裝載到集裝箱(容器)這一過(guò)程變得輕而易舉。對(duì)于遠(yuǎn)洋運(yùn)輸(應(yīng)用運(yùn)行)而言,用多艘小貨輪(虛擬機(jī))代替原來(lái)的大貨輪(實(shí)體機(jī))也能保證貨物(應(yīng)用)彼此之間的安全,但是和集裝箱(容器)比,成本過(guò)高,但適合運(yùn)輸某些重要貨物(應(yīng)用)。

任何貨物,無(wú)論鋼琴還是保時(shí)捷,都被放到各自的集裝箱中。集裝箱在整個(gè)運(yùn)輸過(guò)程中都是密封的,只有到達(dá)最終目的地才被打開(kāi)。標(biāo)準(zhǔn)集裝箱可以被高效地裝卸、重疊和長(zhǎng)途運(yùn)輸?,F(xiàn)代化的起重機(jī)可以自動(dòng)在卡車(chē)、輪船和火車(chē)之間移動(dòng)集裝箱。集裝箱被譽(yù)為運(yùn)輸業(yè)與世界貿(mào)易最重要的發(fā)明。

Docker 將集裝箱思想運(yùn)用到軟件打包上,為代碼提供了一個(gè)基于容器的標(biāo)準(zhǔn)化運(yùn)輸系統(tǒng)。Docker 可以將任何應(yīng)用及其依賴(lài)打包成一個(gè)輕量級(jí)、可移植、自包含的容器。容器可以運(yùn)行在幾乎所有的操作系統(tǒng)上。

其實(shí),“集裝箱” 和 “容器” 對(duì)應(yīng)的英文單詞都是 “Container”。

“容器” 是國(guó)內(nèi)約定俗成的叫法,可能是因?yàn)槿萜鞅燃b箱更抽象,更適合軟件領(lǐng)域的原故吧。

3、容器的優(yōu)勢(shì)

對(duì)于開(kāi)發(fā)人員

容器意味著環(huán)境隔離和可重復(fù)性。開(kāi)發(fā)人員只需為應(yīng)用創(chuàng)建一次運(yùn)行環(huán)境,然后打包成容器便可在其他機(jī)器上運(yùn)行。另外,容器環(huán)境與所在的 Host 環(huán)境是隔離的,就像虛擬機(jī)一樣,但更快更簡(jiǎn)單。

對(duì)于運(yùn)維人員

只需要配置好標(biāo)準(zhǔn)的 runtime 環(huán)境,服務(wù)器就可以運(yùn)行任何容器。這使得運(yùn)維人員的工作變得更高效,一致和可重復(fù)。容器消除了開(kāi)發(fā)、測(cè)試、生產(chǎn)環(huán)境的不一致性。

“Docker容器定義工具有哪些”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI