close

這篇文章算是做一個記錄,以前我在找Docker的文章的時候找得很辛苦,還到處去看Youtube研究Docker。

「docker」的圖片搜尋結果

Docker 、Container 、Image ,這些名詞搞得我暈頭轉向,因此特別寫一篇,也算是給自己做筆記。

我們先來說個情境。你是一個工程師,你有一堆同事,你使用的電腦、你同事的電腦、還有你公司伺服器的環境,每個人都不一樣。所以在你的電腦可以跑的code,拿到伺服器上就不能跑了。而且你也有可能會碰到有人不小心動到伺服器上的環境,伺服器就壞掉了,要重新尋找原因也是相當麻煩。

「頭痛」的圖片搜尋結果

所以,在Docker這間公司發明了Docker以後,拯救了全世界的工程師。

Docker其實就是為了解決這問題的一個軟體,在Linux、Windows、Mac等等環境都能安裝。它的功用是在Docker這個平台上面跑一些非常輕量化的虛擬作業系統。

接下來,我要開始解釋什麼是Image、什麼是Container。
想像一下你要蓋一棟房子。假設你是一個建築設計師,在蓋房子之前你就會需要先畫藍圖。
假設你決定重複使用同樣的藍圖,那麼理想上你就能在兩個地方蓋出一模一樣的房子。

「藍圖」的圖片搜尋結果

 

Image就是虛擬作業系統的藍圖,而Container就是以Image為基底所蓋出來的房子。而這個Container你可以把它看成是一個虛擬的作業系統,這個作業系統可以占住一些這台電腦對外的port,變成一個伺服器,對外提供服務。這些Container也可以透過關鍵字,互相連結。讓你的服務可以像積木一樣任意組合。


你可以用一個網站的Web Container對使用者展示你的網頁,用mysql關鍵字連結另外一個專門提供資料庫服務,而不對外公開。這樣一來假設mysql你想要用新的版本,只要替換關鍵字、換一個Image,就能直接更新,不需要手動去安裝套件。

 

這樣有什麼好處呢?因為Image是可以存成一個檔案,傳給別人,因此無論是誰拿到同樣的Image都能夠開出相同的Container,大家都能在同樣的環境下進行開發,就能把環境的影響降到最低。同時,如果有人把Container搞壞了也沒關係,刪掉存在的Container,用原本的Image再開一次就能迅速解決。

 

Docker提供一個叫Docker hub的平台,你可以透過指令在Docker裡面拉一個基本的Image下來,開啟一個空白的Container,在裡面操作之後,用commit存成一個新的Image,在Container裡面的更動通通都會保留下來,你也可以把它放到Docker hub上。

Docker 還有其他功能,比如說可以用DockerCompose 用代碼來記錄,環境建置的過程,這樣的好處就是可以進行Git、自動建置與部屬環境等等。

簡單來說,Image就好比一個帳篷一樣,無論你到哪裡露營,帳篷開起來裡面都是那樣。

「帳篷」的圖片搜尋結果

Docker  大概就是這種感覺。

arrow
arrow
    全站熱搜

    工程師黑田 發表在 痞客邦 留言(0) 人氣()