為什么說docker不是容器

從容器化技術誕生的那一刻起,docker就成為了這個領域的佼佼者。然而,有一個聲音越來越響亮,和 docker 不是“容器” 有關。這句話說的匪夷所思,因為 docker 一直以來都是容器化技術的代名詞,都是人們口口相傳說著docker container。

那么,為什么有人會說 Docker 不是“容器” 呢?如何理解這個問題?本文將從技術實現原理和哲學層面,解析 Docker 為什么不是“容器”。

  1. 技術實現原理

Docker 最初的創意并不是容器化,而是在 LXC(Linux Container)基礎上將其封裝,用一套 REST API 呈現出來,進而方便應用開發者進行使用,這就是 Docker 最初的理念。Docker 技術最初支持的是單一進程的程序,它是以提交了一個 Image 鏡像文件為基礎,一旦鏡像提交,Docker 就可以通過該鏡像啟動一到多個容器,容器中運行著應用進程。

與傳統的虛擬化技術(如 VMWare、Virtual Box)相比,Docker 使用的是進程級別的隔離,即在同一個主機上的多個容器可以共享同一套操作系統內核。這樣可以節省大量的資源開銷,輕松實現快速部署、快速啟動、快速遷移和版本管理等特性。

事實上,Docker 技術對原有的 LXC 技術進行了改進和提高,并將其封裝成了一個更加輕量級、功能更為強大的容器引擎。從這個角度來看,Docker 并不是原生的容器技術,而是對容器的封裝和加強,所以有人說 Docker 不是“容器”。

  1. 哲學層面

此外,還有一個從 Docker 哲學層面上考慮的問題,Docker 并沒有真正做到“容器”的安裝、配置、運行和移除這些方方面面的管理。在 Docker 中,鏡像的構建、更新和版本控制仍然是開發者自行管理的。這意味著,Docker 并沒有完全開發出一個統一的機制來管理容器和鏡像,從而使得或多或少還需要進行一些手動工作。

并且,Docker 對底層的容器技術做了太多的封裝,變得過于復雜,容易引起初學者的困惑。而它本身所包含的太多的坑和限制,使得容器化這一本來簡化流程的方法變得復雜了。

從這個角度來看,尤其從工程實現層面上考慮,Docker 并不能被歸為“容器”,因為它仍然需要在機制上進行完善。

  1. Docker 是容器嗎?

既然上述兩點給出的答案是“不是” ,那么 Docker 系統的性質與特點究竟是什么?毋庸置疑,Docker 是一種應用環境部署和管理的解決方案,它與容器技術密切相關。Docker 的造福在于其出色的操作簡便性、高效的沙盒機制、方便的鏡像制作和共享方式以及部署容器的便利性。Docker 給人們帶來的是更加科學、更加快捷、更加方便的部署方法。因而,Docker 可以被看做是一個應用環境解決方案,而不是“容器”的干貨。

總結

本文從 Docker 技術實現原理和哲學層面兩個方面,解釋了為什么有人說 Docker 不是“容器”。事實上,Docker 被定義為一種應用環境部署和管理的解決方案。這并不意味著 Docker 取代了或者不需要容器技術,反而說明了 Docker 技術是基于容器技術上的增強,更好地實現了容器技術的價值。雖然 Docker 的性質與特點不是容器,但是 Docker 帶來的改變是應用環境管理的一大跨越,帶來了極大的便利性和靈活性。

? 版權聲明
THE END
喜歡就支持一下吧
點贊15 分享