現今如想要成功開發應用程式,需要的不僅僅是編寫程式碼,在開發的不同生命週期,往往需要使用不同的程式語言、架構以及工具,而諸多的不同將造成連接時的複雜度倍增。Docker即是為了簡化並加速開發工作流程而誕生的工具,在Docker的支援下,開發人員可以在一致的環境下,快速展開各自負責的項目,且不會因為環境不相容或是版本問題,需要重新建立,且啟動速度神速。

Docker的容器技術起源於2013年,原先是Dotcloud公司推出的開源專案,由於其為軟體工程師帶來環境建立與統一的便利性,以及輕量、一秒即可開啟的高效性,使得Docker在近幾年快速竄紅,成為工程師必學、必追的潮流新技術,此技術甚至改變了軟體工程師過去五年的工作方式,相關文章可參考【Docker四種方式改變了軟體工程師過去五年的工作方式】。

如果想成為更與時俱進的軟體工程師,Docker將成為不得不學的技術之一;如果還站在是否要成為軟體工程師的交叉路口,可以先參考Glints的文章【認真考慮這6件事,評估自己是否真的想轉職軟體工程師!】。

此篇文章Glints將提供入門Docker教學,讓大家了解Docker的基本觀念、學會如何安裝以及常用指令。


Docker 教學 – 基本觀念篇

Docker與傳統技術的關鍵差別——容器化

容器化的指的是「以應用程式為核心的虛擬化」,如果說,應用程式可以直接在作業系統的層面虛擬化,直接將開發應用程式所需的函式庫、程式碼、環境變數等內容打包,分別將之安置於各個容器內,並搭配相對應的Host OS資源,如此一來,則可省去安裝作業系統的步驟,更不需等待Guset OS的開機。下圖可見Docker與傳統Virtual Machine的差異:

containerized applications
virtual machine

Docker的三個基本觀念

映像檔(Image)

映像檔為一個唯獨的模板,內可包含完整的ubuntu作業系統環境。映像檔可用來快速生產Docker容器,並可重複產生。映像檔可以透過Dockerfile建立,或是開放公開下載的地方取得。

容器(Container)

容器是由映像檔建立出來的實例,Docker即是利用容器來執行關鍵技術,容器可以被啟動、開始、停止、刪除,且容易與容器之間是相互隔離、保證安全的。

倉庫(Repository)

倉庫是用以放置映像檔檔案的場所,每個倉庫可收納多個映像檔,而每個映像檔又有相對應的標籤。倉庫共有公開倉庫(Public)及私有倉庫(Private)兩種形態。而最大的公開倉庫為Docker Hub,裡面存放了大量的現成、實用映像檔供使用者下載。


Docker 教學 – 實作篇

安裝

以下的Doceker安裝教學將以Mac的Intel晶片版本作為說明範例,Apple晶片版的Mac以及Windows的安裝方式基本上大同小異。

基本條件確認

首先,MacOS的版本必須要達10.15或以上,且電腦記憶體(RAM)須達4GB,以上條件皆相符後,還需再確認電腦中沒有安裝VirtualBox4.3.30之前的版本,因其與Docker不兼容。

安裝與執行

  1. 雙重點擊Docker.dmg打開安裝檔,再將Docker圖示拖至Applications的文件夾中。
drag and drop docker app
  1. 雙重點擊Applications資料夾中的Docker.app來啟動。
docker app in apps
  1. Docker選單(鯨魚圖示)顯示Docker訂閱服務的協議窗口,包含更改Docker桌面使用條款。
  2. 點擊框框表明接受更新的條款,再點擊接受以繼續,接受條款後,Docker桌面將啟動。
docker tutorial mac

快速入門指南

啟動剛安裝的應用程式,Docker Desktop會啟動快速入門指南,包含簡單的練習,如:建構簡單的映像檔、將其作為容器運作,並將映像檔儲存至Docker Hub。

常用指令大補帖

如果你是Docker的初學者,建議跟著Docker應用程式的快速入門指南做一遍,讓自己具備基本的操作概念,在操作過程中想必會遇到許多需要靠死背才能活用的「指令」,如果感到陌生的話,別擔心,Glints已經為大家整理好了三大類常用指令。

映像檔(Image)常用指令

指令動作說明
docker images列出本機的映像檔– a為列出完整映像檔層次資訊;-q為只列出映像檔ID;-tree代表列出映像檔不同層次間的樹狀關係。
docker save/load將映像檔存入、匯出
docker pull下載映像檔如果沒有加入registry位置,則預設從官方下載
docker rmi刪除映像檔只能刪除本機中存放的映像檔
docker tag替本機映像檔加標籤
docker build建立映像檔可從現有的映像檔為基礎,建立全新的映像檔
docker run執行映像檔
docker push上傳映像檔

容器(Container)常用指令

指令動作說明
create建立並執行容器
run新建或啟動以image為基礎建立容器
kill刪除容器刪除正在執行中的容器,但容器依舊存在
rm刪除容器刪除執行中或停止的容器,讓容器從此消失
pause停止運作停止正在運作中的容器,服務持續
unpause再次啟動讓停止運作的容器恢復運作
stop停止運作停止正在運作中的容器,服務中斷
start啟動啟動停止中的容器
inspect查看檢查容器的狀態

倉庫(Repository)常用指令

指令動作說明
pull下載
push上傳
login登入
tag標籤
export匯出
import匯入
commit容器存檔

結論

Docker的便利性與實用性使之成為近年來軟體工程師必學的技術之一,但由於其嶄新的系統及概念,剛踏入學門的大家也不要操之過急,Docker並非三兩天就可以熟能生巧,需要一步一腳印的知識累積、操作的磨練與堆疊,方能成為專家。Glints提供的入門Docker教學將成為學習的起點,以平易近人的語言帶大家認識新的技術,至於要如何成為大師,還得仰賴後續的精進了。

如果你希望可以得到更多資訊,可以追蹤Glints的臉書粉絲頁,每個星期都可以看到熱門職缺與職涯資訊 。

你也可以到Glints – Taiwan去了解更多!或是註冊帳號,收到職缺通知!

延伸閱讀:

對軟體工程師求職有興趣的人,可以看看Glints的其他精選文章

About Author

旅遊成癮患者,同時也是愛海的山系女子
熱愛文字的所有樣貌,除了知識型文章,也寫生活、寫旅遊

Leave A Comment

Your email address will not be published. Required fields are marked *