docker是什么?Docker中的鏡像、容器、倉庫有什么
發(fā)布時(shí)間:2022-05-25 07:42
來(lái)源:新網(wǎng)
閱讀:191
作者:網(wǎng)絡(luò )
欄目: 虛擬主機
歡迎投稿:712375056
??當站長(cháng)朋友在進(jìn)行建站時(shí),一般都會(huì )選擇虛來(lái)作為建站,如果你購買(mǎi)數量比較多,在安裝網(wǎng)站程序時(shí),由于不同空間的操作系統是不同的,有時(shí)會(huì )出現程序錯誤的情況。而想要批量給虛擬主機安裝程序又不出現錯誤,此時(shí)就需要使用docker。那么docker是什么?大家都清楚嗎?告訴大家docker就是一種輕量級的虛擬機,它可以把系統環(huán)境都模仿下來(lái),然后在不同的服務(wù)器上將模仿的環(huán)境復制出來(lái),這樣在安裝程序時(shí),就無(wú)需擔心會(huì )出現錯誤的情況了。
??docker是什么?
??Docker是一個(gè)開(kāi)源的應用容器引擎,讓開(kāi)發(fā)者可以打包他們的應用以及依賴(lài)包到一個(gè)可移植的鏡像中,然后發(fā)布到任何流行的Linux或Windows機器上,也可以實(shí)現虛擬化。容器是完全使用沙箱機制,相互之間不會(huì )有任何接口。
??一個(gè)完整的Docker有以下幾個(gè)部分組成:
??1、DockerClient客戶(hù)端;
??2、Docker Daemon守護進(jìn)程;
??3、Docker Image鏡像;
??4、DockerContainer容器。
??docker是如何工作的?
??1、docker build
??當我們寫(xiě)完dockerfile交給docker“編譯”時(shí)使用這個(gè)命令,那么client在接收到請求后轉發(fā)給docker daemon,接著(zhù)docker daemon根據dockerfile創(chuàng )建出“可執行程序”image。
??2、docker run
??有了“可執行程序”image后就可以運行程序了,接下來(lái)使用命令docker run,docker daemon接收到該命令后找到具體的image,然后加載到內存開(kāi)始執行,image執行起來(lái)就是所謂的container。
??3、docker pull
??其實(shí)docker build和docker run是兩個(gè)最核心的命令,會(huì )用這兩個(gè)命令基本上docker就可以用起來(lái)了。
??Docker中的鏡像、容器、倉庫有什么關(guān)系?
??(1)Docker鏡像(image)
??鏡像是創(chuàng )建Docker容器的基礎,Docker鏡像類(lèi)似于虛擬機鏡像,可以把Docker鏡像理解成一個(gè)特殊的文件系統,除了提供容器運行時(shí)所需的程序、庫、資源、配置等文件外,還包含了一些為運行時(shí)準備的一些配置參數(如匿名卷、環(huán)境變量、用戶(hù)等)。鏡像不包含任何動(dòng)態(tài)
數據,其內容在構建之后也不會(huì )被改變(只讀)。
??Docker提供了一套十分簡(jiǎn)單的機制來(lái)創(chuàng )建和更新現有的鏡像。用戶(hù)可以從網(wǎng)上下載一個(gè)已經(jīng)做好的應用鏡像,并通過(guò)命令直接使用??傊?,應用運行是需要環(huán)境的,而鏡像就是來(lái)提供這種環(huán)境。
??例如:一個(gè)鏡像可以完全包含了Ubuntu操作系統環(huán)境,可以把它稱(chēng)作一個(gè)Ubuntu鏡像。鏡像也可以安裝了Apache應用程序(或其他軟件),可以把它稱(chēng)為一個(gè)Apache鏡像。
??(2)Docker容器(Container)
??鏡像(Image)和容器(Container)的關(guān)系,就像是面向對象程序設計中的類(lèi)和實(shí)例一樣,鏡像是靜態(tài)的定義,容器是鏡像運行時(shí)的實(shí)體。容器可以被創(chuàng )建、啟動(dòng)、停止、刪除、暫停等。并且這些容器都是相互隔離、互不可見(jiàn)的。
??docker是什么
??Docker容器(Container)類(lèi)似于一個(gè)輕量級的沙箱子(因為Docker是基于Linux內核的虛擬技術(shù),所以消耗資源十分少),可以把每個(gè)容器看作一個(gè)簡(jiǎn)易版的Linux系統環(huán)境(包括了root用戶(hù)權限、進(jìn)程空間、用戶(hù)空間和網(wǎng)絡(luò )空間),以及與運行在其中的應用程序打包而成的應用盒子。Docker利用容器來(lái)運行和隔離應用。容器內的進(jìn)程是運行在一個(gè)隔離的環(huán)境里,使用起來(lái),就好像是在一個(gè)獨立于宿主的系統下操作一樣。這種特性使得容器封裝的應用比直接在宿主運行更加安全。
??鏡像自身是只讀的。容器從鏡像啟動(dòng)的時(shí)候,Docker會(huì )在鏡像的最上層創(chuàng )建一個(gè)可寫(xiě)層,鏡像本身將保持不變。就像用ISO裝系統之后,ISO并沒(méi)有什么變化一樣。
??(3)Docker倉庫(Repository)
??Docker倉庫(Repository)類(lèi)似于代碼倉庫,是Docker集中存放鏡像文件的場(chǎng)所。每個(gè)倉庫集中存放某一類(lèi)鏡像,往往包括多個(gè)鏡像文件,通過(guò)不同的標簽(tag)來(lái)進(jìn)行區分。例如存放Ubuntu操作系統鏡像的倉庫,稱(chēng)為Ubuntu倉庫,其中可能包括14.04,12.04等不同版本的鏡像。但是,如果需要在其它服務(wù)器上使用這個(gè)鏡像,我們就需要一個(gè)集中的存儲、分發(fā)鏡像的服務(wù),Docker Registry就是這樣的服務(wù)。理解這個(gè)關(guān)系就是:一個(gè)Docker Registry中可以包含多個(gè)倉庫(Repository);每個(gè)倉庫可以包含多個(gè)標簽(Tag);每個(gè)標簽對應一個(gè)鏡像。
??根據存儲的鏡像公開(kāi)分享與否,Docker倉庫分為公開(kāi)倉庫(Public)和私有倉庫(Private)兩種形式。
??目前,最大的公開(kāi)倉庫是Docker Hub,存放了數量龐大的鏡像供用戶(hù)下載。國內的公開(kāi)倉庫包括Docker Pool等,可以提供穩定的國內訪(fǎng)問(wèn)。如果用戶(hù)不希望公開(kāi)分享自己的鏡像文件,Docker也支持用戶(hù)在本地網(wǎng)絡(luò )內創(chuàng )建一個(gè)只能自己訪(fǎng)問(wèn)的私有倉庫。
??當用戶(hù)創(chuàng )建了自己的鏡像之后就可以使用push將它上傳到指定的公有或則私有倉庫。這樣用戶(hù)下次在另一臺機器上使用該鏡像時(shí),只需將其從倉庫pull下來(lái)就可以了。
??上文已經(jīng)給大家介紹了docker是什么,現在的docker就像是獨立的操作系統,可以滿(mǎn)足大家批量在不同的操作系統中安裝程序,而且現在的docker技術(shù)已經(jīng)十分成熟,很多公司或企業(yè)都在使用docker。如果你對docker還有不明白的地方,都可以到特網(wǎng)上找相關(guān)的技術(shù)人員來(lái)咨詢(xún)一下具體的操作方法。