鏡像、容器、倉庫是docker的三大核心概念。
docker鏡像類似於虛擬機鏡像,你可以將其理解為一個只讀模板。
docker容器類似於一個輕量級的沙箱,Docker利用容器來運行和隔離應用。
容器是從鏡像創建的應用運行實例。可以將其啟動、開始、停止、刪除,而這些容器都是彼此相互隔離的、互不可見的。
鏡像自身是只讀的。容器從鏡像啟動時,會在鏡像的最上層創建一個可寫層。
簡單的說,容器是鏡像的一個運行實例。所不同的是,鏡像只是靜態的只讀文件,而容器帶有運行時需要的可寫文件層。
如果認為虛擬機是模擬運行的一整套操作系統(包括內核、應用運行態環境和其它系統環境)和跑在上面的應用,
那么docker容器就是獨立運行的一個(或一組)應用,以及它必須的運行環境。
docker倉庫類似於代碼倉庫,它是docker集中存放鏡像文件的場所。
需要注意的是倉庫(repository),不要將docker倉庫和倉庫注冊服務器(registry)混淆。
倉庫注冊服務器是存放倉庫的地方,其上往往存放着多個倉庫。
每個倉庫集中存放某一類鏡像,往往包括多個鏡像文件,通過不同的標簽(tag)來區分。
比如,在下面這個倉庫注冊服務器中就有多個倉庫,有Ubantu倉庫、有CentOS的倉庫,還有很多其它的倉庫。
根據所存儲的鏡像是否公開,docker倉庫可以分為公有倉庫(public)和私有倉庫(Private)兩種形式。
目前最大的公開倉庫是官方提供的Docker Hub。當然國內的很多雲服務商也提供了很多源。
例如:阿里雲、騰訊雲、華為雲、時速雲、網易蜂巢等等。
查看某一個命令的幫助: man docker-xxx,例如man docker-images
還可以使用docker[-xx] --help,例如docker tag --help