docker
docker
what is docker
- Docker是基于Go語言開發實現的,是一種對進程進行封裝隔離,屬于操作系統層面的虛擬化技術
- 由于隔離的進程獨立于宿主和其它隔離的進程,Docker也因此被稱為容器
The discrimination between virtual machines and docker
- 傳統虛擬機技術是虛擬出一套硬件,在其運行一個完整的操作系統,然后在這個系統運行所需的應用進程
- Docker的應用進程是直接運行為宿主的內核上,容器內沒有自己的內核,更沒有硬件虛擬
-
Docker容器比傳統的虛擬機更為輕便
Virtual_Machines
docker
總結對比
The advantage of Docker
- 容器不需要硬件模擬或者運行操作系統等額外開外,故相比與傳統的虛擬機技術,一個相同配置的主機,可以運行更多數量的容器
- 容器直接運行于宿主內核,無需啟動完整的操作系統,因此可以做到毫秒級的啟動
- 容器可以提供一致的開發環境
- 使用容器可以定制鏡像來實現持續集成,交付和部署
Docker Image
- Docker鏡像(Image),就相當于是一個root文件系統
- 鏡像使用的是分層存儲
例如:官方鏡像 ubuntu:16.04 就包含了完整的一套 Ubuntu 16.04 最小系統的 root 文件系統
Docker Container
- 鏡像(Image)和容器(Container)的關系,就相當于面向對象程序設計的類和實例一樣
- 鏡像是靜態的定義
- 容器是鏡像運行時的實體
- 容器可以被創建,啟動,停止,刪除,暫停等等
- 容器是一個運行在隔離環境下的進程,與其它進程不同的是,容器可以擁有只屬于自己的root文件系統,自己的網絡配置,自己的進程空間以及自己的ID空間等等
- 如同鏡像一樣,容器也是使用分層存儲,每一個容器運行時,以鏡像為基礎層,在其上創建一個當前容器的存儲層,可稱為容器運行時而準備的存儲層,又稱容器存儲層
- 容器消亡時,容器存儲層也隨之消亡,故,容器不應向存儲層寫入任何數據需保持無狀態化
- 所以的文件寫入操作,都應該使用數據卷,或者綁定宿主目錄,在這些位置的讀寫會跳過容器存儲層,直接對宿主或者網絡存儲發生讀寫
- 容器消亡,數據卷不會消亡,使用數據卷后,容器刪除或者重新運行之后,數據不會丟失
Docker Register
- 一個 Docker Registry 中可以包含多個倉庫(Repository)
- 每個倉庫可以包含多個標簽(Tag),每個標簽對應一個鏡像,如版本標簽,如果忽略標簽,則使用latest作為默認標簽
- Docker Hub
- 阿里云加速器