爲什麼引入Docker容器

一、爲什麼引入Docker

在軟件開發中,由於計算機的環境各不相同,不同軟件在不同機器上運行時,需要進行環境配置。

比如,操作系統的設置,各種庫和組件的安裝。只有它們都正確,軟件才能運行。舉例來說,安裝一個 Python 應用,計算機必須有 Python 引擎,還必須有各種依賴,可能還要配置環境變量。

如果某些老舊的模塊與當前環境不兼容,可能會出現"在我的機器可以跑,其他機器很可能跑不了”的問題。

環境配置如此麻煩,換一臺機器,就要重來一次,甚是麻煩。那麼能不能從根本上解決問題,軟件可以帶環境安裝?也就是說,安裝的時候,把原始環境一模一樣地複製過來。

  1. 虛擬機
    虛擬機(virtual machine)就是帶環境安裝的一種解決方案。它可以在一種操作系統裏面運行另一種操作系統,比如在 Windows 系統裏面運行 Linux 系統。應用程序對此毫無感知,因爲虛擬機看上去跟真實系統一模一樣,而對於底層系統來說,虛擬機就是一個普通文件,不需要了就刪掉,對其他部分毫無影響。

    雖然用戶可以通過虛擬機還原軟件的原始環境。但是,這個方案有幾個缺點。
    (1)資源佔用多:
    虛擬機會獨佔一部分內存和硬盤空間。它運行的時候,其他程序就不能使用這些資源了。哪怕虛擬機裏面的應用程序,真正使用的內存只有 1MB,虛擬機依然需要幾百 MB 的內存才能運行。
    (2)冗餘步驟多:
    虛擬機是完整的操作系統,一些系統級別的操作步驟,往往無法跳過,比如用戶登錄。
    (3)啓動慢:
    啓動操作系統需要多久,啓動虛擬機就需要多久。可能要等幾分鐘,應用程序才能真正運行。

  2. Linux容器
    由於虛擬機存在這些缺點,Linux 發展出了另一種虛擬化技術:Linux 容器(Linux Containers,縮寫爲 LXC)。

    Linux 容器不是模擬一個完整的操作系統,而是對進程進行隔離。或者說,在正常進程的外面套了一個保護層。對於容器裏面的進程來說,它接觸到的各種資源都是虛擬的,從而實現與底層系統的隔離。

    由於容器是進程級別的,相比虛擬機有很多優勢。

    (1)啓動快:啓動容器相當於啓動本機的一個進程,而不是啓動一個操作系統,速度就快很多。
    (2)資源佔用少
    容器只佔用需要的資源,不佔用那些沒有用到的資源;虛擬機由於是完整的操作系統,不可避免要佔用所有資源。另外,多個容器可以共享資源,虛擬機都是獨享資源。
    (3)體積小
    容器只要包含用到的組件即可,而虛擬機是整個操作系統的打包,所以容器文件比虛擬機文件要小很多。

  3. Docker
    Docker 屬於 Linux 容器的一種封裝,提供簡單易用的容器使用接口。它是目前最流行的 Linux 容器解決方案。

    Docker 將應用程序與該程序的依賴,打包在一個文件裏面。運行這個文件,就會生成一個虛擬容器。程序在這個虛擬容器裏運行,就好像在真實的物理機上運行一樣。有了 Docker,就不用擔心環境問題。

    總體來說,Docker 的接口相當簡單,用戶可以方便地創建和使用容器,把自己的應用放入容器。容器還可以進行版本管理、複製、分享、修改,就像管理普通的代碼一樣。
    在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章