Docker 包括三個基本概念
理解了這三個概念,就理解了 Docker 的整個生命周期。
Docker 鏡像就是一個只讀的模板。
例如:一個鏡像可以包含一個完整的 Ubuntu 操作系統環境,裡面僅安裝了 Apache 或用戶需要的其它應用程序。
鏡像可以用來創建 Docker 容器。
Docker 提供了一個很簡單的機制來創建鏡像或者更新現有的鏡像,用戶甚至可以直接從其他人那裡下載一個已經做好的鏡像來直接使用。
Docker 利用容器來運行應用。
容器是從鏡像創建的運行實例。它可以被啟動、開始、停止、刪除。每個容器都是相互隔離的、保證安全的平台。
可以把容器看做是一個簡易版的 Linux 環境(包括root用戶權限、進程空間、用戶空間和網絡空間等)和運行在其中的應用程序。
*注:鏡像是只讀的,容器在啟動的時候創建一層可寫層作為最上層。
倉庫是集中存放鏡像文件的場所。有時候會把倉庫和倉庫注冊服務器(Registry)混為一談,並不嚴格區分。實際上,倉庫注冊服務器上往往存放著多個倉庫,每個倉庫中又包含了多個鏡像,每個鏡像有不同的標簽(tag)。
倉庫分為公開倉庫(Public)和私有倉庫(Private)兩種形式。
最大的公開倉庫是 Docker Hub,存放了數量龐大的鏡像供用戶下載。 國內的公開倉庫包括 Docker Pool 等,可以提供大陸用戶更穩定快速的訪問。
當然,用戶也可以在本地網絡內創建一個私有倉庫。
當用戶創建了自己的鏡像之後就可以使用 push
命令將它上傳到公有或者私有倉庫,這樣下次在另外一台機器上使用這個鏡像時候,只需要從倉庫上 pull
下來就可以了。
*注:Docker 倉庫的概念跟 Git 類似,注冊服務器可以理解為 GitHub 這樣的托管服務。