在了解 Container 之前,先來聊聊服務是如何建立的。傳統服務我們會選擇在虛擬機上執行,安裝過程相信各位都有遇過同樣經驗,根據所需軟體,我們照著教學文檔一步步的小心安裝,因為每個人電腦環境都不盡相同,過程中難免會跳出錯誤訊息,也許缺少某些函式庫,或是有些組態需要設定,上網查詢各式解答花好一番功夫才得以順利完成,這樣的問題不只是個人會遇到,維運人員當然也會,而且維運人員還需在維持服務穩定的情況去更新、擴展、移植應用程式,遇到的問題更是五花八門。這時若透過將應用容器化的方式,對這些問題就能有一個好遵循的解決方式。
所謂的 Container 其實是一種虛擬化技術,透過將應用程式及其依賴(如程式碼、函式庫、組態)打包成單一物件,接著利用容器平台(docker)就能在不同環境也能運行相同的應用程式。不僅提供一致的軟體環境,也能輕鬆在任何地方執行及擴展應用程式,而這些特性就是 DevOps 所需的,將開發者與維運人員之間的溝通變得更為輕鬆。透過 Container 技術,開發者就能將複雜的安裝步驟及程式碼封裝成物件,提供給維運人員部屬,讓軟體交付的過程精簡成較為簡單的問題。
了解完 Container 後,Docker 其實就是一個運型容器的平台,在不同作業系統上都能安裝。透過一系列簡單的指令,就能快速將容器搭建起來,並且提供如 Docker Hub 的 Public Registry ,讓我們使用別人已建置好的 Image ,若想將應用程式給打包起來,也能撰寫dockerfile
的方式來達成。
今天我們了解了 Container 技術,後兩天會分別以容器操作跟 Image 建置為出發點,利用 Docker 來學習如何利用 Container 來運行服務以及如何自行打包應用程式。