從容器化技術誕生的那一刻起,Docker就成為了這個領域的佼佼者。然而,有一個聲音越來越響亮,和 Docker 不是「容器」 有關。這句話說的匪夷所思,因為 Docker 一直以來都是容器化技術的代名詞,都是人們口口相傳說著Docker Container。
那麼,為什麼有人會說 Docker 不是「容器」 呢?如何理解這個問題?本文將從技術實作原理和哲學層面,解析 Docker 為什麼不是「容器」。
Docker 最初的創意並不是容器化,而是在LXC(Linux Container)基礎上將其封裝,並以一套REST API 呈現出來,進而方便應用程式開發者使用,這就是Docker 最初的理念。 Docker 技術最初支援的是單一進程的程序,它是以提交了一個 Image 映像檔為基礎,一旦映像提交,Docker 就可以透過該映像啟動一到多個容器,容器中運行著應用程式。
與傳統的虛擬化技術(如 VMWare、Virtual Box)相比,Docker 使用的是進程層級的隔離,即在同一個主機上的多個容器可以共用同一套作業系統核心。這樣可以節省大量的資源開銷,輕鬆實現快速部署、快速啟動、快速遷移和版本管理等功能。
事實上,Docker 技術對原有的 LXC 技術進行了改進和提高,並將其封裝成了更輕量級、功能更為強大的容器引擎。從這個角度來看,Docker 並不是原生的容器技術,而是對容器的封裝和加強,所以有人說 Docker 不是「容器」。
此外,還有一個從Docker 哲學層面考慮的問題,Docker 並沒有真正做到「容器」的安裝、配置、運作和移除這些各方面的管理。在 Docker 中,映像的建置、更新和版本控制仍然是開發者自行管理的。這意味著,Docker 並沒有完全發展出一個統一的機制來管理容器和映像,這使得或多或少還需要進行一些手動工作。
並且,Docker 對底層的容器技術做了太多的封裝,變得過於複雜,容易引起初學者的困惑。而它本身所包含的太多的坑和限制,使得容器化這一本來簡化流程的方法變得複雜了。
從這個角度來看,尤其從工程實現層面上考慮,Docker 並不能被歸類為“容器”,因為它仍然需要在機制上進行完善。
既然上述兩點給的答案是「不是」 ,那麼 Docker 系統的性質與特徵究竟是什麼?毋庸置疑,Docker 是一種應用環境部署和管理的解決方案,它與容器技術密切相關。 Docker 的造福在於其出色的操作簡便性、高效的沙盒機制、方便的鏡像製作和共享方式以及部署容器的便利性。 Docker 帶給人們的是更科學、更快捷、更方便的部署方法。因而,Docker 可以被視為一個應用環境解決方案,而不是「容器」的乾貨。
總結
本文從 Docker 技術實現原理和哲學層面兩個方面,解釋了為什麼有人說 Docker 不是「容器」。事實上,Docker 被定義為應用環境部署和管理的解決方案。這並不意味著 Docker 取代了或不需要容器技術,反而說明了 Docker 技術是基於容器技術上的增強,並且更好地實現了容器技術的價值。雖然 Docker 的性質與特徵不是容器,但 Docker 帶來的改變是應用環境管理的一大跨越,帶來了極大的便利性和靈活性。
以上是為什麼說docker不是容器的詳細內容。更多資訊請關注PHP中文網其他相關文章!