現今如想要成功開發應用程式,需要的不僅僅是編寫程式碼,在開發的不同生命週期,往往需要使用不同的程式語言、架構以及工具,而諸多的不同將造成連接時的複雜度倍增。Docker即是為了簡化並加速開發工作流程而誕生的工具,在Docker的支援下,開發人員可以在一致的環境下,快速展開各自負責的項目,且不會因為環境不相容或是版本問題,需要重新建立,且啟動速度神速。
Docker的容器技術起源於2013年,原先是Dotcloud公司推出的開源專案,由於其為軟體工程師帶來環境建立與統一的便利性,以及輕量、一秒即可開啟的高效性,使得Docker在近幾年快速竄紅,成為工程師必學、必追的潮流新技術,此技術甚至改變了軟體工程師過去五年的工作方式,相關文章可參考【Docker四種方式改變了軟體工程師過去五年的工作方式】。
如果想成為更與時俱進的軟體工程師,Docker將成為不得不學的技術之一;如果還站在是否要成為軟體工程師的交叉路口,可以先參考Glints的文章【認真考慮這6件事,評估自己是否真的想轉職軟體工程師!】。
此篇文章Glints將提供入門Docker教學,讓大家了解Docker的基本觀念、學會如何安裝以及常用指令。
目錄
Docker 教學 – 基本觀念篇
Docker與傳統技術的關鍵差別——容器化
容器化的指的是「以應用程式為核心的虛擬化」,如果說,應用程式可以直接在作業系統的層面虛擬化,直接將開發應用程式所需的函式庫、程式碼、環境變數等內容打包,分別將之安置於各個容器內,並搭配相對應的Host OS資源,如此一來,則可省去安裝作業系統的步驟,更不需等待Guset OS的開機。下圖可見Docker與傳統Virtual Machine的差異:
Docker的三個基本觀念
映像檔(Image)
映像檔為一個唯獨的模板,內可包含完整的ubuntu作業系統環境。映像檔可用來快速生產Docker容器,並可重複產生。映像檔可以透過Dockerfile建立,或是開放公開下載的地方取得。
容器(Container)
容器是由映像檔建立出來的實例,Docker即是利用容器來執行關鍵技術,容器可以被啟動、開始、停止、刪除,且容易與容器之間是相互隔離、保證安全的。
倉庫(Repository)
倉庫是用以放置映像檔檔案的場所,每個倉庫可收納多個映像檔,而每個映像檔又有相對應的標籤。倉庫共有公開倉庫(Public)及私有倉庫(Private)兩種形態。而最大的公開倉庫為Docker Hub,裡面存放了大量的現成、實用映像檔供使用者下載。
Docker 教學 – 實作篇
安裝
- Mac官網安裝連結【Install Docker Desktop on Mac】
- Windows官網安裝連結【Install Docker Desktop on Windows】
以下的Doceker安裝教學將以Mac的Intel晶片版本作為說明範例,Apple晶片版的Mac以及Windows的安裝方式基本上大同小異。
基本條件確認
首先,MacOS的版本必須要達10.15或以上,且電腦記憶體(RAM)須達4GB,以上條件皆相符後,還需再確認電腦中沒有安裝VirtualBox4.3.30之前的版本,因其與Docker不兼容。
安裝與執行
- 雙重點擊Docker.dmg打開安裝檔,再將Docker圖示拖至Applications的文件夾中。
- 雙重點擊Applications資料夾中的Docker.app來啟動。
- Docker選單(鯨魚圖示)顯示Docker訂閱服務的協議窗口,包含更改Docker桌面使用條款。
- 點擊框框表明接受更新的條款,再點擊接受以繼續,接受條款後,Docker桌面將啟動。
快速入門指南
啟動剛安裝的應用程式,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的其他精選文章
- 【軟體工程師遠端工作,企業接受,你接受了嗎?】
- 【軟體工程師遠端工作薪水高、機會多!】
- 【揭曉:軟體工程師履歷,HR一定會看這3點!】
- 【軟體工程師面試考試題庫,LeetCode有2000題,要怎麼練!】
- 【軟體工程師 vs 招聘主管:準備好這15個問題,順利通過面試!】
- 【軟體工程師 面試,問這6個問題留下好印象!】
- 【面試一開始,主管請你自我介紹:身為軟體工程師,如何自我介紹?】
- 【Tech Job – 軟體工程師找到理想工作,靠這一招!】
- 【LeetCode刷題:500題後,我發現了5個軟體工程師必須了解的重點!】
- 【目標是新創、小型公司,我該刷LeetCode嗎?】
- 【面試題庫除了LeetCode,還可以考慮什麼?10個LeetCode代替方案】
- 【面試心得:一位軟體工程師,在5間不同公司的面試分享!】