前言
嗨~來到新的一年啦!先祝大家新年快樂、年終50個月xD今天想要來和大家介紹一隻藍色鯨魚,他叫docker。如下圖,相信應該很多人都有看過這張照片吧~這隻鯨魚非常地不簡單啊,到底有多部簡單就讓我們繼續看下去。
Docker概念
談到Docker,就一定要先有容器化的概念。容器化又是什麼?容器化主要是以應用程式為中心,最大目標是為了改善虛擬機器因為需要裝 Guest OS 導致啟動慢、佔較大記憶體的問題。
相信應該很多人有碰過在自己的電腦上開發、測試程式都可以跑得好好的阿,阿為什麼在別人的電腦上跑都有問題?(謎之音:一定是別人的電腦有問題!)
會有這樣的問題是因為每台電腦的作業系統和硬體配置有差異,而自己開發出來的程式可以跑可能只是因為你的程式和你的電腦環境可以相容,所以可以正常運作。而虛擬化就是要模擬出一個環境,讓程式在不同的環境下都可以正常運作。虛擬化技術有兩種,一種是在系統上做虛擬化,最常見的就是虛擬機器(Virtual Machine),另外一種則針對作業系統做虛擬化是今天要介紹的Docker。
Docker在作業系統層上虛擬化,透過 Container Manager 直接將一個應用程式所需的程式碼、函式庫打包,建立資源控管機制隔離各個容器,並分配 Host OS 上的系統資源。透過容器,應用程式不需要再另外安裝作業系統(Guest OS)也可以執行。因為不需要另外安裝作業系統,建立容器所需要的硬碟容量可以大幅降低,且啟動速度可以更快,不需要等待 Guest OS 的開機時間。上面講了這麼多一定有看沒懂,整體概念可用下面的圖片來解釋
三元素
- Image:一個做蛋糕的模具
- Container:用該模具烤出來的蛋糕
- Repository:用來集中放置模具們的收納櫃
映像檔(Image)
- 一個模板,用來重複產生容器實體
- Read-only唯讀檔
容器(Container)
- 用映像檔建立出來的執行實例
- 每個容器都是相互隔離
- 啟動時會建立一層可以被修改的可寫層作為最上層,讓容器的功能可以再擴充
倉庫(Repository)
- 存放Image的地方
- 倉庫註冊伺服器(Registry)上則存放著多個倉庫
- 最大Registry: DockerHub
- 可在Registry上建立多個Repository透過push/pull上傳存取
- 分為公開倉庫(Public)和私有倉庫(Private)
Docker file
講到Docker一定會聽到Docker file這個詞吧。Docker file是用來透過下指令告訴Docker如何打包程式碼。但因為我自己還沒有親自寫過Docker file,所以這裡就不多提及了。有興趣可以看參考附的連結有簡單介紹。
結論
之前老師上課有提過Docker,但我沒仔細聽(被揍,開始工作也有使用到,所以有簡單研究一下但對於Docker的瞭解還只是很皮毛QQ要繼續找時間好好研究這隻鯨魚啦~下周見掰掰