iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 13
0
Software Development

Go Distributed & Go Consistently系列 第 13

Day13 Docker

為了讓我們可以快速獲得乾淨的測試資料庫,與後續 Go Distributed at Kubernetes,於此開始介紹一些關於容器的概念。希望能夠幫助一些對於環境苦手的朋友,可以在開發上有一個更快速乾淨的選擇。

特性

Docker 是一種已被廣泛使用的虛擬方式,跟一些舊有的虛擬方式相比他有以下優勢

  • 快速部署,可實現秒級實作
  • 資源使用率高,表示因虛擬化而被犧牲的資源較少,可以在實體機器上運行更多的虛擬機提供服務
  • 易拓展性,原本只適用於 linux 環境,但近來也提供在 win & mac 運行的方式
  • 易於管理,將不同功能與服務分離,每次只針對部分做更新且不需重啟實體機器

docker vs VM

這是由官方文件所提供的對比圖,看得出容器是基於 linuxOS 上,去分享使用資源,包涵 cpu & memory。而 VM 則是透過重新劃分硬體資源,需額外經過虛擬化管理層,故 VM 會需要額外佔用更多的實體資源。可參考官方原文

三大組成要素

Image

Docker 映像檔就是一個唯讀的模板。
例如:一個映像檔可以包含一個完整的 ubuntu 作業系統環境,裡面僅安裝了 Apache 或使用者需要的其它應用程式。映像檔可以用來建立 Docker 容器。Docker 提供了一個很簡單的機制來建立映像檔或者更新現有的映像檔,使用者甚至可以直接從其他人那裡下載一個已經做好的映像檔來直接使用。

這個特性對我們來說很方便,以開發或測試來說,不同專案需要不同資料庫或 cluster database 時,僅需要去 pull image 並使體化出多個 container 即可。

Container

Docker 利用容器來執行應用。容器是從映像檔建立的執行實例。它可以被啟動、開始、停止、刪除。每個容器都是相互隔離的、保證安全的平台。可以把容器看做是一個簡易版的 Linux 環境(包括root使用者權限、程式空間、使用者空間和網路空間等)和在其中執行的應用程式。

容器乾淨的分離方式有助於我們在版本更新或錯誤發生時,能快速進行抽換容器減少服務更新或還原時間。

Registry

倉庫分為公開倉庫(Public)和私有倉庫(Private)兩種形式。公開倉庫像是 Docker Hub,存放了數量龐大的映像檔供使用者下載使用者也可以在本地網路內建立一個私有倉庫。Docker 倉庫的概念跟 Git 類似,註冊伺服器可以理解為 GitHub 這樣的託管服務。當使用者建立了自己的映像檔之後就可以使用 push 命令將它上傳到公有或者私有倉庫,這樣下次在另外一台機器上使用這個映像檔時候,只需要從倉庫上 pull 下來就可以了。

這也是他易於拓展的原因,不論是想在公開或私有的網路環境部署,都可以輕易地取得相同的映像檔部署在不同機器上。

Install

Download
安裝的部分請大家參考官方下載說明進行安裝,我們明天會針對 Dockerfile 的使用、基本命令與同時啟動多個 containers 時,所需要的 docker-compose 進行介紹。

DockerHub
建議建立一下 DockerHub 的帳號,可以幫我們保管建立好的 images 於公倉,便於隨時隨地取用。


上一篇
Day12 Atomic
下一篇
Day14 Dockerfile & Docker-Compose
系列文
Go Distributed & Go Consistently30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言