首頁  >  文章  >  運維  >  為什麼說docker不是容器

為什麼說docker不是容器

王林
王林原創
2023-05-16 22:23:06813瀏覽

從容器化技術誕生的那一刻起,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 帶來的改變是應用環境管理的一大跨越,帶來了極大的便利性和靈活性。

以上是為什麼說docker不是容器的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn