docker簡介
Docker是一個開源的應用容器引擎,讓開發者能夠打包他們的應用以及依賴包到一個可移植的容器中,而後發佈到任何流行的 Linux 機器上,也能夠實現虛擬化。容器是徹底使用沙箱機制,相互之間不會有任何接口。docker
咱們一開始選擇相對基礎的docker,而不是一上來就K8S,主要是爲了可以儘可能學習到基礎的相關知識,而後再學K8S就會比較駕輕就熟。架構
Docker分紅兩個版本,分別是CE和EE:工具
Community Edition (CE) 簡稱社區版學習
Enterprise Edition (EE) 檢查企業版測試
不用多說,咱們確定用社區版,接下來的後續文章咱們都是採用CE版本。
ui
docker架構
docker引擎是一個場景的CS架構,外層是CLI,中間是API層,最裏面是核心組件,以下圖所示:命令行
docker的架構和實際使用能夠參考下圖:blog
docker的幾個重要概念:接口
1.Registry
Docker倉庫用來保存鏡像,能夠理解爲代碼控制中的代碼倉庫。
Docker Hub(https://hub.docker.com) 提供了龐大的鏡像集合供使用。進程
2.Image
Docker鏡像是用於建立 Docker 容器的模板。
3.Container
容器是獨立運行的一個或一組應用。
4.Host
一個物理或者虛擬的機器用於執行 Docker 守護進程和容器。
5.Daemon
docker的後臺服務進程dockerd。
6.Client
Docker客戶端經過命令行或者其餘工具使用 Docker API 與 Docker 的守護進程通訊。
docker安裝
咱們以Ubuntu 18.04爲例子,安裝docker是比較簡單的命令以下:
docker的簡單使用
咱們暫時還不打算講解如何作鏡像,先以用爲主,用熟了再學如何製做本身的鏡像。容器的思想很簡單,就是Build once,Run anywhere,從上面的架構圖能夠看到,最簡單核心的流程就是build>pull>run,build就是製做鏡像,pull就是從鏡像hub獲取指定鏡像,最後一步就是run把鏡像跑起來。
因爲build製做鏡像稍微有點複雜,咱們就先跳過,直接從pull和run開始,直接使用https://hub.docker.com/上面別人作好的。
瞭解run機制
從字面上講,run只是跑起一個鏡像實例,實際上內部能夠分爲兩個步驟,第一步是把鏡像裝入容器並建立實例(咱們能夠稱之爲create),第二步就是把裝入了鏡像的容器實例跑起來(咱們能夠稱之爲start)。
咱們先作一個試驗,咱們執行兩次docker run hello-world
這樣的輸出結果,咱們能夠得知,原來每run一次,都會從新建立一個新的容器實例,若是咱們要把容器實例中止或者開啓,應該是用stop和start,刪除實例咱們能夠用rm,具體看下面的演示:
能夠看到容器實例目前就只剩下一個了,咱們能夠再對剩下的容器進行stop和start測試。瞭解這個run機制很是關鍵,這也是筆者一開始接觸和學習的時候所踩過的坑,一直以爲run就是運行的意思,屢次run都是運行同一個實例,所以先把run的機制搞懂是很基礎和很關鍵的。今天就先到這,下期咱們繼續深刻學習docker的使用。
————————————————