最近更新文章
2017/10/20
職場監視尺度須拿捏 兼顧資安保護及員工隱私
2017/10/20
AI/運算/感測相繼成熟 自駕車隨技術水到渠成
2017/10/19
樺賦科技全新 N2350 和 N4350 儲存伺服器
2017/10/19
雲服務接地氣 電信級標籤防偽
2017/10/19
微服務容器不是易開罐
2017/10/18
記錄檔案伺服器存取軌跡 免費達成稽核調閱要求
2017/10/17
希捷推出高容量 12TB NAS 硬碟
2017/10/17
網路櫃攸關機房運作 細節著手管理更可靠
2017/10/17
解危IoT威脅 資安委外滅火
2017/10/16
大世科成立全台首座企業級資安實戰演練中心
2017/10/16
合勤科技 2017 BBWF 首次亮相最新 WiFi Mesh 解決方案
2017/10/16
緊盯資安最脆弱環節 專家解析主機異常活動
2017/10/16
正確撰寫Dockerfile 製作最好用容器映像檔
2017/10/15
Hitachi Vantara 全新商用 Lumada 軟體堆疊, 強化工業物聯網平台市場
2017/10/14
恩智浦運用 Google Cloud IoT Core 促進智慧裝置的邊緣運算
2017/10/14
達友科技獨家代理資安品牌 OPSWAT 抵抗惡意攻擊
2017/10/13
NEC 研發出世界首創的聲音AR技術
2017/10/13
Nutanix 發表最新的企業雲平台 採用單一OS混合雲
2017/10/13
統轄大型複雜虛擬化環境 vROps監控管理有效率
2017/10/13
電商連資安險都拒保 專業防護贏回競爭力
2017/10/12
Openfind Mail2000 協助企業輕鬆做好資安防護
2017/10/12
NETSCOUT 推出 AIRCHECK G2 全新功能
將此篇文章跟 Facebook 上的朋友分享將此篇文章跟 Plurk 上的朋友分享將此篇文章跟 Twitter 上的朋友分享列印轉寄
2017/7/3

微服務軟體架構推手 無伺服器FaaS雲端平台基石

輕量虛擬化改寫IT歷史 Docker容器技術細說從頭

鄭淳尹
開放原始碼軟體專案Docker是一個輕量級的虛擬化技術,屬於作業系統層虛擬化,可以讓應用程式部署在軟體容器下的工作自動化執行。本文將介紹Docker的發展歷史以及未來的展望。


每個時代都有新技術出現,自從2013年dotCloud這間PaaS公司將內部的專案Docker開源之後,就點燃了容器的光明時代。也正因軟體開源運動的蓬勃,大量技術愛好者紛紛投入協助貢獻其原始碼,加速了Docker這套容器工具的發展。

當然生逢其時,Docker借鏡了Linux CLI(Command-line Interface)的常用指令,和Linus Torvalds所發展的Git指令,讓開源愛好者很迅速就可上手,加上取名與GitHub類似的Docker Hub,提供使用者上傳個人的容器映像檔並可自動化建置,也擴大了Docker的影響力和格局,進而從套件封裝工具中脫穎而出,甚至改變了整個Linux作業系統生態,相同類型的工具包括AppImages(可攜式Linux軟體格式)、Snaps(Canonical公司推出的軟體部署和套件管理工具)和Flatpak(前身為xdg-app的沙箱式執行環境)。




Docker是什麼?容器又是什麼?

Docker剛推出標榜是輕量級的虛擬化技術,屬於作業系統層虛擬化(Operating System–Level Virtualization),建構在Linux內核包含的Linux Container(LXC)技術之上,直到0.9版之後,推出了libcontainer(之後改名為runC,https://runc.io/),便抽離了底層容器技術的相依性,因此2016年微軟推出Windows Container便直接相容Docker操作指令和API。

當然,容器技術並不是Docker公司憑空想像,如圖1所示,從1979年的Unix V7、2005年的OpenVZ,以及2008年LXC,甚至是2013年Google推出的容器技術Let Me Contain That For You(LMCTFY,https://github.com/google/lmctfy),皆不斷改進技術並貼近使用者,正因前面提到,Docker憑借友善直觀的指令和使用者提供豐富大量的Docker映像檔確立了本身在容器技術的主流市場。


▲圖1 容器的歷史。(資料來源:www.plesk.com)


筆者身為Java程式語言的開發人員,原本也對JVM的跨平台執行環境深信不疑,但隨著經驗和系統數量的增加,資訊軟體大廠在Java Development Kit(JDK)上的分歧,讓「Write Ones, Run Everywhere」淪為口號,此時Docker官方所標榜的「Build, Ship and Run Any App, Anywhere」特性,也是讓多數開發者全力擁抱的關鍵原因。因應用程式與執行環境和相依的函式庫,一同封裝到單一Docker映像檔,所以只要docker run一行指令,就可執行Linux任何應用程式,包含現在最火熱且很難安裝的深度學習框架TensorFlow(Google DeepMind開發,人工智慧圍棋程式AlphaGo就是用此框架發展出來的)。

再者,由於隔離性和可攜性,開發者在筆記型電腦寫好的應用程式,透過Docker封裝,便可無縫移植到任何Linux平台,當然就避免掉測試、營運環境要逐一部署檢查的煩人無謂工作,這也是官方所稱的Martix Hell(比喻多一項系統環境,就多一整排相依軟體需要測試,如果有五種環境和五套軟體,就有5×5的陣列組合,故稱矩陣地獄),進而成為DevOps軟體開發流程的核心工具,圖2上方便顯示整合軟體開發人員(Dev)和維運技術人員(Ops)的理念(https://www.docker.com/use-cases/devops)。


▲圖2 Docker標語和願景(資料來源:www.docker.com)




Docker容器跟VM虛擬機有何不同?

正因為初期定位為輕量級虛擬化,所以很多人誤解容器技術的使用方式,其實跟虛擬化技術所要解決的問題是南轅北轍。

傳統虛擬化技術是從模擬虛擬硬體下手,主要目標是建立一個完全獨立的沙箱式作業系統執行環境,單位是一整台虛擬機(Virtual Machine),所產生出的執行單位稱作實例(instance)。

而容器技術則純粹只是將應用系統相關的程式碼、函式庫、執行環境配置打包成隔離的可執行沙箱環境,並沒有做任何硬體虛擬化,正因為少了虛擬化的客體作業系統(Guest OS)這一層,所以執行應用系統效率會比虛擬化要好。但容器化技術並不會幫作業系統或硬體加速,單純只是資源利用率比較高。

 
12
這篇文章讓你覺得滿意不滿意
送出
相關文章
微服務容器不是易開罐
正確撰寫Dockerfile 製作最好用容器映像檔
開源造就敏捷競爭力
實際動手操作Docker 學會Volume及Network
共用系統核心資源 玩轉Windows Server容器
留言
顯示暱稱:
留言內容:
送出