docker是什么?Docker中的鏡像、容器、倉庫有什么關系?
當站長朋友在進行建站時,一般都會選擇虛擬主機來作為建站空間,如果你購買的虛擬主機數(shù)量比較多,在安裝網(wǎng)站程序時,由于不同空間的操作系統(tǒng)是不同的,有時會出現(xiàn)程序錯誤的情況。而想要批量給虛擬主機安裝程序又不出現(xiàn)錯誤,此時就需要使用docker。那么docker是什么?大家都清楚嗎?新網(wǎng)告訴大家docker就是一種輕量級的虛擬機,它可以把系統(tǒng)環(huán)境都模仿下來,然后在不同的服務器上將模仿的環(huán)境復制出來,這樣在安裝程序時,就無需擔心會出現(xiàn)錯誤的情況了。
Docker是一個開源的應用容器引擎,讓開發(fā)者可以打包他們的應用以及依賴包到一個可移植的鏡像中,然后發(fā)布到任何流行的Linux或Windows機器上,也可以實現(xiàn)虛擬化。容器是完全使用沙箱機制,相互之間不會有任何接口。
一個完整的Docker有以下幾個部分組成:
1、DockerClient客戶端;
2、Docker Daemon守護進程;
3、Docker Image鏡像;
4、DockerContainer容器。
docker是如何工作的?
1、docker build
當我們寫完dockerfile交給docker“編譯”時使用這個命令,那么client在接收到請求后轉發(fā)給docker daemon,接著docker daemon根據(jù)dockerfile創(chuàng)建出“可執(zhí)行程序”image。
2、docker run
有了“可執(zhí)行程序”image后就可以運行程序了,接下來使用命令docker run,docker daemon接收到該命令后找到具體的image,然后加載到內存開始執(zhí)行,image執(zhí)行起來就是所謂的container。
3、docker pull
其實docker build和docker run是兩個最核心的命令,會用這兩個命令基本上docker就可以用起來了。
(1)Docker鏡像(image)
鏡像是創(chuàng)建Docker容器的基礎,Docker鏡像類似于虛擬機鏡像,可以把Docker鏡像理解成一個特殊的文件系統(tǒng),除了提供容器運行時所需的程序、庫、資源、配置等文件外,還包含了一些為運行時準備的一些配置參數(shù)(如匿名卷、環(huán)境變量、用戶等)。鏡像不包含任何動態(tài)數(shù)據(jù),其內容在構建之后也不會被改變(只讀)。
Docker提供了一套十分簡單的機制來創(chuàng)建和更新現(xiàn)有的鏡像。用戶可以從網(wǎng)上下載一個已經(jīng)做好的應用鏡像,并通過命令直接使用。總之,應用運行是需要環(huán)境的,而鏡像就是來提供這種環(huán)境。
例如:一個鏡像可以完全包含了Ubuntu操作系統(tǒng)環(huán)境,可以把它稱作一個Ubuntu鏡像。鏡像也可以安裝了Apache應用程序(或其他軟件),可以把它稱為一個Apache鏡像。
(2)Docker容器(Container)
鏡像(Image)和容器(Container)的關系,就像是面向對象程序設計中的類和實例一樣,鏡像是靜態(tài)的定義,容器是鏡像運行時的實體。容器可以被創(chuàng)建、啟動、停止、刪除、暫停等。并且這些容器都是相互隔離、互不可見的。
docker是什么
Docker容器(Container)類似于一個輕量級的沙箱子(因為Docker是基于Linux內核的虛擬技術,所以消耗資源十分少),可以把每個容器看作一個簡易版的Linux系統(tǒng)環(huán)境(包括了root用戶權限、進程空間、用戶空間和網(wǎng)絡空間),以及與運行在其中的應用程序打包而成的應用盒子。Docker利用容器來運行和隔離應用。容器內的進程是運行在一個隔離的環(huán)境里,使用起來,就好像是在一個獨立于宿主的系統(tǒng)下操作一樣。這種特性使得容器封裝的應用比直接在宿主運行更加安全。
(3)Docker倉庫(Repository)
Docker倉庫(Repository)類似于代碼倉庫,是Docker集中存放鏡像文件的場所。每個倉庫集中存放某一類鏡像,往往包括多個鏡像文件,通過不同的標簽(tag)來進行區(qū)分。例如存放Ubuntu操作系統(tǒng)鏡像的倉庫,稱為Ubuntu倉庫,其中可能包括14.04,12.04等不同版本的鏡像。但是,如果需要在其它服務器上使用這個鏡像,我們就需要一個集中的存儲、分發(fā)鏡像的服務,Docker Registry就是這樣的服務。理解這個關系就是:一個Docker Registry中可以包含多個倉庫(Repository);每個倉庫可以包含多個標簽(Tag);每個標簽對應一個鏡像。
根據(jù)存儲的鏡像公開分享與否,Docker倉庫分為公開倉庫(Public)和私有倉庫(Private)兩種形式。
目前,最大的公開倉庫是Docker Hub,存放了數(shù)量龐大的鏡像供用戶下載。國內的公開倉庫包括Docker Pool等,可以提供穩(wěn)定的國內訪問。如果用戶不希望公開分享自己的鏡像文件,Docker也支持用戶在本地網(wǎng)絡內創(chuàng)建一個只能自己訪問的私有倉庫。
當用戶創(chuàng)建了自己的鏡像之后就可以使用push將它上傳到指定的公有或則私有倉庫。這樣用戶下次在另一臺機器上使用該鏡像時,只需將其從倉庫pull下來就可以了。
聲明:免責聲明:本文內容由互聯(lián)網(wǎng)用戶自發(fā)貢獻自行上傳,本網(wǎng)站不擁有所有權,也不承認相關法律責任。如果您發(fā)現(xiàn)本社區(qū)中有涉嫌抄襲的內容,請發(fā)
送郵件至:operations@xinnet.com進行舉報,并提供相關證據(jù),一經(jīng)查實,本站將立刻刪除涉嫌侵權內容。本站原創(chuàng)內容未經(jīng)允許不得轉載,或轉載時
需注明出處:新網(wǎng)idc知識百科