Docker 解決了軟件環境部署複雜的問題。linux
對於一個傳統的軟件工程,開發人員把寫好的代碼放到服務器上去運行是一件很頭疼的事情,由於經常會出現環境不兼容而致使各類各樣的 Bug。windows
好比說,開發是在 windows 系統下編寫的代碼,放到 linux 服務器上可能會出問題;開發在本地依賴了一個系統自帶的驅動,服務器上卻沒有這個驅動;開發在本地設置了不少環境變量,服務器上又得從新設置。。。centos
在軟件部署的時候,常常會發生在這臺機器上能夠跑,可是在另外一臺機器上卻運行失敗的狀況。運維人員須要不斷在開發環境和服務器環境之間調試。服務器
有了 Docker, 只須要簡單的幾行命令,就能夠作到全部的運行環境都一致。架構
Docker 簡化了環境配置流程運維
Docker 使用的技術幾乎沒有新技術,大可能是對 Linux 已經存在的技術的封裝。Docker 中的容器,是使用 Linux 以前的一些技術,把開發須要設置的環境,所有隔離在一塊兒,造成一個集裝箱。當有其餘的環境須要配置的時候,只須要複製一個集裝箱就能夠了。微服務
容器能夠輕鬆建立和銷燬工具
在環境配置的時候,還能夠使用建立虛擬機的方式來實現環境同步。若是服務器用的是 centos 的系統,能夠在開發的時候就用 centos 開發。這確實解決了一些問題,可是仍是須要去獨立配置每一臺機器。並且,虛擬機自己對多個程序之間的環境不兼容的時候無能爲力,可能須要藉助第三方的一些管理工具,而 Docker 卻能夠輕鬆在一臺機器上運行多個容器。雲計算
Docker 容器和虛擬機spa
容器不是一臺機器。Docker 利用的是 Linux 的資源分離機制,例如 cgroups,以及 Linux 核心命名空間(namespaces),來創建獨立的容器(containers)。容器看上去是一臺機器,其實是一個進程。
相比於虛擬機,容器的優點主要有:
- 資源佔用少
- 啓動速度快
- 自己體積小
Docker 給軟件開發領域帶來的不單單是提供環境,能夠說它直接帶火了 Golang。由於 Docker 容器建立和銷燬很是方便,很適合用來動態擴容和縮容,能夠直接用在雲計算當中的彈性服務當中。另外,基於 Docker 容器的隔離特性,一臺服務器上能夠同時跑不少個程序而作到管理方便,很符合微服務架構的須要。