Docker 入門:什麼是 Docker ?

和牛發表於2020-05-25

Docker 解決了軟體環境部署複雜的問題。

對於一個傳統的軟體工程,開發人員把寫好的程式碼放到伺服器上去執行是一件很頭疼的事情,因為常常會出現環境不相容而導致各種各樣的 Bug。

比如說,開發是在 windows 系統下編寫的程式碼,放到 linux 伺服器上可能會出問題;開發在本地依賴了一個系統自帶的驅動,伺服器上卻沒有這個驅動;開發在本地設定了很多環境變數,伺服器上又得重新設定。。。

在軟體部署的時候,經常會發生在這臺機器上可以跑,但是在另一臺機器上卻執行失敗的情況。運維人員需要不斷在開發環境和伺服器環境之間除錯。

有了 Docker, 只需要簡單的幾行命令,就可以做到所有的執行環境都一致。

Docker 簡化了環境配置流程Docker 簡化了環境配置流程

Docker 使用的技術幾乎沒有新技術,大多是對 Linux 已經存在的技術的封裝。Docker 中的容器,是使用 Linux 之前的一些技術,把開發需要設定的環境,全部隔離在一起,形成一個集裝箱。當有其他的環境需要配置的時候,只需要複製一個集裝箱就可以了。

容器可以輕鬆建立和銷燬容器可以輕鬆建立和銷燬

在環境配置的時候,還可以使用建立虛擬機器的方式來實現環境同步。如果伺服器用的是 centos 的系統,可以在開發的時候就用 centos 開發。這確實解決了一些問題,但是還是需要去獨立配置每一臺機器。而且,虛擬機器本身對多個程式之間的環境不相容的時候無能為力,可能需要藉助第三方的一些管理工具,而 Docker 卻可以輕鬆在一臺機器上執行多個容器。

Docker 容器和虛擬機器Docker 容器和虛擬機器

容器不是一臺機器。Docker 利用的是 Linux 的資源分離機制,例如 cgroups,以及 Linux 核心名稱空間(namespaces),來建立獨立的容器(containers)。容器看上去是一臺機器,實際上是一個程式。

相比於虛擬機器,容器的優勢主要有:

  • 資源佔用少
  • 啟動速度快
  • 本身體積小

Docker 給軟體開發領域帶來的不僅僅是提供環境,可以說它直接帶火了 Golang。因為 Docker 容器建立和銷燬非常方便,很適合用來動態擴容和縮容,可以直接用在雲端計算當中的彈性服務當中。另外,基於 Docker 容器的隔離特性,一臺伺服器上可以同時跑很多個程式而做到管理方便,很符合微服務架構的需要。

相關文章