佳木斯湛栽影视文化发展公司

主頁(yè) > 知識(shí)庫(kù) > Docker如何部署您的第一個(gè)應(yīng)用程序

Docker如何部署您的第一個(gè)應(yīng)用程序

熱門標(biāo)簽:硅谷的囚徒呼叫中心 檢查注冊(cè)表項(xiàng) 網(wǎng)站建設(shè) 百度競(jìng)價(jià)點(diǎn)擊價(jià)格的計(jì)算公式 阿里云 美圖手機(jī) 智能手機(jī) 使用U盤裝系統(tǒng)

上一篇,您已經(jīng)完成了Docker Desktop安裝,并啟用了Kubernetes,接下來(lái)就可容器化部署應(yīng)用程序了。通常,開(kāi)發(fā)工作流包括如下幾點(diǎn):

1、首先創(chuàng)建Docker鏡像,為應(yīng)用程序的每個(gè)組件創(chuàng)建和測(cè)試單個(gè)容器。

2、將容器和所支持的基礎(chǔ)設(shè)施組裝成一個(gè)完整的應(yīng)用程序,可以用Docker stack file或者Kubernetes的YAML來(lái)實(shí)現(xiàn)。

3、測(cè)試、共享和部署完整的容器化應(yīng)用程序。

在本篇幅中,我們將集中于此工作流的步驟1:基于現(xiàn)有的容器來(lái)創(chuàng)建鏡像。請(qǐng)記住,Docker鏡像捕獲了容器化進(jìn)程將在其中運(yùn)行的私有文件系統(tǒng);我們需要?jiǎng)?chuàng)建一個(gè)鏡像,其中正好包含我們的應(yīng)用程序需要運(yùn)行的內(nèi)容。

容器化開(kāi)發(fā)環(huán)境比傳統(tǒng)開(kāi)發(fā)環(huán)境更容易設(shè)置,一旦您學(xué)習(xí)了如何構(gòu)建鏡像,我們將在下面討論。這是因?yàn)槿萜骰拈_(kāi)發(fā)環(huán)境會(huì)將應(yīng)用程序所需的所有依賴項(xiàng)隔離在Docker鏡像中;除了Docker之外,不需要在開(kāi)發(fā)計(jì)算機(jī)上安裝任何東西(即開(kāi)發(fā)環(huán)境的部署僅依賴于Docker鏡像)。這樣,您就可以輕松地為不同的堆棧開(kāi)發(fā)應(yīng)用程序,而無(wú)需更改開(kāi)發(fā)機(jī)器上的任何環(huán)境。

配置

1、從GitHub克隆用于演示的示例項(xiàng)目。

git clone -b v1 https://github.com/docker-training/node-bulletin-board
cd node-bulletin-board/bulletin-board-app

這是一個(gè)簡(jiǎn)單的公告板應(yīng)用程序,用node.js編寫。在這個(gè)例子中,讓我們假設(shè)是您編寫了這個(gè)應(yīng)用程序,現(xiàn)在正試圖將其容器化部署起來(lái),目錄結(jié)構(gòu)如圖1.1所示。

圖1.1

查看名字為Dockerfile的文件,Dockerfile文件描述了如何為容器組裝私有的文件系統(tǒng),并且還包含了一些描述如何基于此鏡像運(yùn)行容器的元數(shù)據(jù)。公告板應(yīng)用程序Dockerfile如圖1.2所示。

圖1.2

容器化部署應(yīng)用程序的第一步是編寫Dockerfile。您可以把這些Dockerfile命令當(dāng)作是一個(gè)創(chuàng)建鏡象的步驟。這個(gè)步驟如下:

1、使用版本號(hào)6.11.5的鏡像作為本次構(gòu)建的基礎(chǔ)鏡像。6.11.5基礎(chǔ)鏡像是由node.js官方提供的鏡像

2、指定鏡像文件系統(tǒng)的工作目錄為/usr/src/app,即每次登錄基于該鏡像創(chuàng)建的容器,目錄會(huì)自動(dòng)切換到/usr/src/app

3、將package.json文件復(fù)制到鏡像的當(dāng)前位置,即/usr/src/app/package.json

4、在鏡像文件系統(tǒng)中運(yùn)行npm install命令(它將讀取package.json以確定應(yīng)用程序的節(jié)點(diǎn)依賴關(guān)系,并安裝它們)

5、將應(yīng)用程序的其余源代碼從主機(jī)復(fù)制到鏡像中。

您可以看到,這些步驟與您在主機(jī)上設(shè)置和安裝應(yīng)用程序時(shí)可能采取的步驟大致相同,但使用Dockerfile允許我們?cè)谝粋€(gè)可移植、獨(dú)立的Docker鏡像(node.js官方鏡像)再次構(gòu)建。

上面的步驟為鏡像構(gòu)建了文件系統(tǒng),但是Dockerfile中還有一行,CMD命令行。CMD ["要運(yùn)行的程序","參數(shù)1","參數(shù)2"] 是告訴容器啟動(dòng)時(shí)要運(yùn)行的命令或腳本,Dockerfile中命令告知此鏡像要支持的容器化進(jìn)程是npm start。

注意:Dockerfile只能有一條CMD命令,如果有多條,則執(zhí)行最后一條。

一個(gè)Dockerfile始終是從FROM命令開(kāi)始,上述是一個(gè)簡(jiǎn)單的Dockerfile文件,還有更多的Dockerfile指令,請(qǐng)參閱Dockerfile reference(https://docs.docker.com/engine/reference/builder/)。

構(gòu)建鏡像并測(cè)試

現(xiàn)在我們有了源代碼和Dockerfile,是時(shí)候構(gòu)建我們的第一個(gè)鏡像了,并確保從該鏡像啟動(dòng)的容器能按預(yù)期工作。

注意:本示例使用的是Linux容器。使用Docker Desktop的用戶,右鍵單擊系統(tǒng)托盤中的Docker徽標(biāo),確保您的環(huán)境正在運(yùn)行Linux容器,若不是,請(qǐng)點(diǎn)擊“Switch to Linux containers...",如圖1.3所示,我當(dāng)前演示環(huán)境使用的已是Linux容器。

圖1.3

1、進(jìn)入Powershell,并確保您當(dāng)前目錄是node-bulletin-board/bulletin-board-app,如圖1.4所示,執(zhí)行命令

# docker image build -t bulletinboard:1.0 .

圖1.4

在構(gòu)建最后會(huì)輸出如下字樣,表示構(gòu)建鏡像成功。

Successfully built 49f9b9fb7daf

Successfully tagged bulletinboard:1.0

上述命令表是創(chuàng)建一個(gè)名為bulletinboard的鏡像(image),tag為1.0,如圖1.5所示。

圖1.5

2、基于bulletinboard鏡像運(yùn)行一個(gè)名為bb的容器并以后臺(tái)方式運(yùn)行,將容器內(nèi)部端口8080,映射到宿主機(jī)的8000端口上。

# docker container run --publish 8000:8080 --detach --name bb bulletinboard:1.0

我們可以使用如下命令來(lái)查看run指命后可以跟哪些參數(shù)

# docker container run --help

我們登錄到容器,查看到當(dāng)前目錄就是Dockerfile中設(shè)置的工作目錄,如圖1.6所示。

圖1.6

3、通過(guò)http://localhost:8000來(lái)訪問(wèn)您的應(yīng)用,您將看到如下界面,如圖1.7所示,則表示應(yīng)用容器化部署成功,接下來(lái)就是進(jìn)行測(cè)試、構(gòu)建、發(fā)布、分享等過(guò)程。

圖1.7

4、刪除一個(gè)容器,即表示該容器的生命周期結(jié)束。

# docker container rm --force bb

總結(jié)

完成上述操作后,我們已經(jīng)能夠?qū)?yīng)用程序執(zhí)行一個(gè)簡(jiǎn)單的容器化,并確認(rèn)我們的應(yīng)用程序在其容器中成功運(yùn)行。下一步將是編寫Kubernetes 的yaml文件,描述如何在Kubernetes上運(yùn)行和管理容器。

另外,我們應(yīng)該要加強(qiáng)練習(xí)使用Dockerfile構(gòu)建鏡像。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

標(biāo)簽:黃山 湘潭 通遼 煙臺(tái) 湖北 山南 賀州 懷化

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Docker如何部署您的第一個(gè)應(yīng)用程序》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    阳信县| 屏南县| 苏尼特左旗| 扎鲁特旗| 高安市| 南江县| 大兴区| 遂昌县| 元氏县| 侯马市| 农安县| 博兴县| 临江市| 莎车县| 湘阴县| 视频| 松溪县| 梓潼县| 鄂伦春自治旗| 景洪市| 北安市| 虹口区| 涟源市| 凤庆县| 弥渡县| 岚皋县| 游戏| 定边县| 威信县| 南部县| 舞钢市| 孙吴县| 仁布县| 焦作市| 囊谦县| 衢州市| 额敏县| 泗洪县| 秭归县| 华池县| 闸北区|