首個Docker Web application,一起來對Docker說聲Hello吧
前言
在Docker的奇幻旅程開始之前,有幾個基本名詞必須先釐清一下
- Docker Client
- Docker Daemon
- Docker Image
- Docker Container
Docker的核心是Linux,當我們透過Docker Client輸入指令,Docker Client收到指令會進行解析,接著根據指示叫用Docker Daemon。
Docker Daemon負責擔任Client與Linux核心溝通的橋樑,並建立起Container。
Container顧名思義就是一個容器,Daemon會根據Client所給予的參數來決定容器的屬性,諸如network、pid、namespace之類的東西。
Image是映像檔,裡面包含應用程式和作業系統等內容,必須將Image注入到Container內,Container才有辦法產生功用。而注入的過程,Daemon會先檢查本機是否已下載相關的Image檔案,如果還未下載則會去遠端預設的Docker Registry下載。將Image下載完成之後便會注入到Container內,然後完成Container的啟動。
整體架構如下所示
對Docker 說聲 Hello World吧
打開PowerShell 輸入以下指令
docker run -d -P training/webapp python app.py
具體畫面可參考下圖
這段指令分為四個區塊,紅色區塊是代表呼叫docker內建的run指令,docker的指令可透過docker --help的方式列舉出所有指令。第二個區塊是參數,-d代表要docker將這個Container在背景中執行;而-P則是告訴docker自動對應Image檔案和Host的Port,換句話說,假如Image檔案裡有用到80 port,將會自動與Host的80 port對應。
指定port的範例
docker run -d -p 80:80 training/webapp python app.py
第三個區塊是image的名稱,Docker Daemon會先搜尋本機是否有存在此名稱的image檔案,若不存在會自動去遠端下載。第四個區塊是要要在Container內執行的指令。
執行完畢後,輸入docker ps ,如出現以下畫面,代表Container已成功啟動。
檢視成果
輸入docker ps,檢視目前運行中的Container,並找到Container的名稱,接著輸入docker port "Container 名稱",如下圖所示,會出現port自動對應的數字,以下例子是32769。
打開瀏覽器,輸入localhost:port的數字,如出現以下畫面,代表Container已正常運作了。
結論
透過很簡單的幾行指令,就可以在尚未安裝任何其他設定的電腦跑python的程式,展現出docker強大的可攜性,真可謂是DevOps的神器。本篇先小試一下身手,下載別人的Image檔,注入Container內執行,下一篇將談到如何建立屬於自己的Image檔。