您好,登錄后才能下訂單哦!
上一篇,您已經完成了Docker Desktop安裝,并啟用了Kubernetes,接下來就可容器化部署應用程序了。通常,開發工作流包括如下幾點:
1、首先創建Docker鏡像,為應用程序的每個組件創建和測試單個容器。
2、將容器和所支持的基礎設施組裝成一個完整的應用程序,可以用Docker stack file或者Kubernetes的YAML來實現。
3、測試、共享和部署完整的容器化應用程序。
在本篇幅中,我們將集中于此工作流的步驟1:基于現有的容器來創建鏡像。請記住,Docker鏡像捕獲了容器化進程將在其中運行的私有文件系統;我們需要創建一個鏡像,其中正好包含我們的應用程序需要運行的內容。
容器化開發環境比傳統開發環境更容易設置,一旦您學習了如何構建鏡像,我們將在下面討論。這是因為容器化的開發環境會將應用程序所需的所有依賴項隔離在Docker鏡像中;除了Docker之外,不需要在開發計算機上安裝任何東西(即開發環境的部署僅依賴于Docker鏡像)。這樣,您就可以輕松地為不同的堆棧開發應用程序,而無需更改開發機器上的任何環境。
配置
1、從GitHub克隆用于演示的示例項目。
git?clone?-b?v1?https://github.com/docker-training/node-bulletin-board
cd?node-bulletin-board/bulletin-board-app
這是一個簡單的公告板應用程序,用node.js編寫。在這個例子中,讓我們假設是您編寫了這個應用程序,現在正試圖將其容器化部署起來,目錄結構如圖1.1所示。
圖1.1
查看名字為Dockerfile的文件,Dockerfile文件描述了如何為容器組裝私有的文件系統,并且還包含了一些描述如何基于此鏡像運行容器的元數據。公告板應用程序Dockerfile如圖1.2所示。
圖1.2
容器化部署應用程序的第一步是編寫Dockerfile。您可以把這些Dockerfile命令當作是一個創建鏡象的步驟。這個步驟如下:
1、使用版本號6.11.5的鏡像作為本次構建的基礎鏡像。6.11.5基礎鏡像是由node.js官方提供的鏡像
2、指定鏡像文件系統的工作目錄為/usr/src/app,即每次登錄基于該鏡像創建的容器,目錄會自動切換到/usr/src/app
3、將package.json文件復制到鏡像的當前位置,即/usr/src/app/package.json
4、在鏡像文件系統中運行npm install命令(它將讀取package.json以確定應用程序的節點依賴關系,并安裝它們)
5、將應用程序的其余源代碼從主機復制到鏡像中。
您可以看到,這些步驟與您在主機上設置和安裝應用程序時可能采取的步驟大致相同,但使用Dockerfile允許我們在一個可移植、獨立的Docker鏡像(node.js官方鏡像)再次構建。
上面的步驟為鏡像構建了文件系統,但是Dockerfile中還有一行,CMD命令行。CMD ["要運行的程序","參數1","參數2"] 是告訴容器啟動時要運行的命令或腳本,Dockerfile中命令告知此鏡像要支持的容器化進程是npm start。
注意:Dockerfile只能有一條CMD命令,如果有多條,則執行最后一條。
一個Dockerfile始終是從FROM命令開始,上述是一個簡單的Dockerfile文件,還有更多的Dockerfile指令,請參閱Dockerfile reference(https://docs.docker.com/engine/reference/builder/)。
構建鏡像并測試
現在我們有了源代碼和Dockerfile,是時候構建我們的第一個鏡像了,并確保從該鏡像啟動的容器能按預期工作。
注意:本示例使用的是Linux容器。使用Docker Desktop的用戶,右鍵單擊系統托盤中的Docker徽標,確保您的環境正在運行Linux容器,若不是,請點擊“Switch to Linux containers...",如圖1.3所示,我當前演示環境使用的已是Linux容器。
圖1.3
1、進入Powershell,并確保您當前目錄是node-bulletin-board/bulletin-board-app,如圖1.4所示,執行命令
#?docker?image?build?-t?bulletinboard:1.0?.
圖1.4
在構建最后會輸出如下字樣,表示構建鏡像成功。
Successfully built 49f9b9fb7daf
Successfully tagged bulletinboard:1.0
上述命令表是創建一個名為bulletinboard的鏡像(image),tag為1.0,如圖1.5所示。
圖1.5
2、基于bulletinboard鏡像運行一個名為bb的容器并以后臺方式運行,將容器內部端口8080,映射到宿主機的8000端口上。
#?docker?container?run?--publish?8000:8080?--detach?--name?bb?bulletinboard:1.0
我們可以使用如下命令來查看run指命后可以跟哪些參數
#?docker?container?run?--help
我們登錄到容器,查看到當前目錄就是Dockerfile中設置的工作目錄,如圖1.6所示。
圖1.6
3、通過http://localhost:8000來訪問您的應用,您將看到如下界面,如圖1.7所示,則表示應用容器化部署成功,接下來就是進行測試、構建、發布、分享等過程。
圖1.7
4、刪除一個容器,即表示該容器的生命周期結束。
#?docker?container?rm?--force?bb
總結
完成上述操作后,我們已經能夠對應用程序執行一個簡單的容器化,并確認我們的應用程序在其容器中成功運行。下一步將是編寫Kubernetes 的yaml文件,描述如何在Kubernetes上運行和管理容器。
另外,我們應該要加強練習使用Dockerfile構建鏡像。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。