溫馨提示×

溫馨提示×

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

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

如何解析Dcoker入門原理及基礎(chǔ)運用

發(fā)布時間:2021-12-03 16:49:44 來源:億速云 閱讀:95 作者:柒染 欄目:云計算

這篇文章將為大家詳細講解有關(guān)如何解析Dcoker入門原理及基礎(chǔ)運用,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。

對Docker的了解,能讀懂下圖也就夠了,圖中有五個對象:鏡像、容器、鏡像倉庫、備份文件、Dockerfile,并且有多個藍色字體標(biāo)出的命令,用來將各種對象互相轉(zhuǎn)換、生成,接下來一一介紹:

如何解析Dcoker入門原理及基礎(chǔ)運用

鏡像

你可以簡單理解鏡像是一個壓縮包,這個包中,有你的程序或代碼,還有一個文件系統(tǒng),所謂文件系統(tǒng),就是打包了一個標(biāo)準(zhǔn)操作系統(tǒng)的所有必須文件,可執(zhí)行程序、運行庫等。

Docker之所以解決了程序執(zhí)行環(huán)境一致性問題,就是將應(yīng)用程序和文件系統(tǒng)打包到了一起,程序運行時,從你打包的鏡像文件系統(tǒng)中加載依賴,比如,你的程序依賴JDK 1.8,那么將鏡像中打包上JDK1.8的基礎(chǔ)庫,然后無論將鏡像部署到何種環(huán)境的系統(tǒng)上,無論那臺主機是否安裝了JDK,或安裝了任意版本的JDK,你的應(yīng)用程序啟動時,都能一致性地加載鏡像中的JDK1.8,避免了因環(huán)境不統(tǒng)一造成的部署難題和運行時BUG。

可以通過ID或名稱識別鏡像,ID是SHA256格式的HASH值,例如:

b1183dab1c4049b9b9d0d0dff17d2eb04e8d9caf873f7ff505ff9fe8909e2a48

可以簡寫做 b1183dab1c40

鏡像名稱分為鏡像名和Tag兩部分組成,中間以冒號分別,如果Tag省略,則代表latest,比如:

# Docker官方鏡像,省略了 Tag
ubuntu

# Docker官方鏡像,指定Tag
ubuntu:16.04

# Docker Hub上非Docker官方的鏡像
maichong/ubuntu:16.04

# 脈沖云倉庫中的鏡像,帶鏡像倉庫地址
maichong.io/project/ubuntu:16.04

可以使用 docker tag 命令給已經(jīng)存在的鏡像打上一個新標(biāo)簽,比如:

# 給 ubuntu:16.04 增加一個新標(biāo)簽 maichong.io/project/ubuntu:16.04
docker tag ubuntu:16.04 maichong.io/project/ubuntu:16.04

查看當(dāng)前系統(tǒng)中所有的鏡像列表:

> docker images
REPOSITORY        TAG            IMAGE ID        CREATED            SIZE
ubuntu            16.04        e13f3d529b1a    6 days ago        115MB

容器

可以簡單理解鏡像是“死的”,是磁盤上儲存的“靜態(tài)的”文件,而容器,則是運行起來的、內(nèi)存中的、“動態(tài)的”實例。當(dāng)然,容器不一定是運行著的,容器也能停止。

通過 docker run 命令可以從一個鏡像啟動一個容器,一個鏡像可以啟動無限個容器副本,每個容器還互相隔離,可以將一個個容器理解成一個個虛擬機,每個容器都有自己的IP、文件系統(tǒng)等等。

和虛擬機相比,容器運行時雖然網(wǎng)絡(luò)、文件等資源是隔離的,但是共享主機的內(nèi)核,即,Docker沒有為每個容器都從頭啟動內(nèi)核,而是在當(dāng)前主機系統(tǒng)的內(nèi)核中運行容器中的程序,這相對于VM虛擬機有非常大的性能優(yōu)勢,所以稱Docker為輕量虛擬化。

可以通過 docker start / docker stop / docker restart 控制容器的啟動、停止、重啟。

運行docker commit命令可以將正在運行的容器生成一個新版本的鏡像,但是推薦使用Dockerfile生成鏡像。

Dockerfile

簡言之,Dockerfile是生成鏡像的配置文件,例如:

# 指定tomcat版本
FROM tomcat:8.5.32-jre8

# 指定工作目錄
WORKDIR /app

# 將打包后的 server.jar 拷貝到鏡像中
# 可以使用脈沖云的編譯構(gòu)建服務(wù),在線將源碼打包成 jar
ADD server.jar /app/server.jar

# 設(shè)置鏡像的啟動命令
CMD java -jar /app/server.jar

# 聲明需要監(jiān)聽的端口
EXPOSE 8080

該文件中首先聲明了鏡像的基礎(chǔ)鏡像,一般情況下,你構(gòu)建的鏡像需要依賴一個基礎(chǔ)鏡像,就像你在一個電腦上安裝軟件的前提是這個電腦已經(jīng)有了一個操作系統(tǒng)。

然后Dockerfile中記錄著生成新鏡像的一個個步驟,包括拷貝文件、執(zhí)行命令等。

Dockerfile中還包含著一些其他信息的聲明,比如環(huán)境變量、標(biāo)注需要開放的端口等。

使用docker build 命令,可以依照Dockerfile中記錄的步驟,一步步生成新的鏡像。

在正在運行的容器內(nèi)執(zhí)行一個個命令,安裝一個個軟件,然后運行 docker commit 也能生成一個新的鏡像,但是請不要這樣操作。因為,使用Dockerfile可以記錄下來鏡像的生成過程,并且能夠隨時調(diào)整其中的步驟,重新生成鏡像。這就是傳說中的基礎(chǔ)設(shè)施即代碼,將基礎(chǔ)環(huán)境的配置當(dāng)做軟件編程來進行。

備份文件

可以使用 docker save 命令,將你電腦上生成的鏡像導(dǎo)出成tar打包文件,然后用來數(shù)據(jù)備份,或?qū)⑽募截惖狡渌娔X上,用docker load 命令導(dǎo)入鏡像,實現(xiàn)鏡像的分發(fā)。

但是,這樣操作非常麻煩,尤其是遠程傳輸。請使用鏡像倉庫來進行統(tǒng)一管理和分發(fā)。

鏡像倉庫

鏡像倉庫就是一個在線提供鏡像存儲的服務(wù)。使用 docker pull 從鏡像倉庫中拉?。ㄏ螺d)鏡像,使用 docker push 命令將本地鏡像推送(上傳)到鏡像倉庫中。

通常我們所有用到的鏡像都來自Docker官方倉庫 http://hub.docker.com ,對于企業(yè)用戶,脈沖云也提供了企業(yè)私有鏡像倉庫,你必須擁有指定項目的權(quán)限,并且通過 docker login maichong.io 登錄后才能向脈沖云中推拉鏡像。

關(guān)于如何解析Dcoker入門原理及基礎(chǔ)運用就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節(jié)

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

AI