Docker是什么?
名稱解釋
??Docker是一個開源的應用容器引擎,可以輕松的讓開發者打包任何應用以及依賴包到一個輕量級的、可移植的、自給自足的容器中。然后發布到任何流行的Linux機器上,也可以實現虛擬化。
??開發者把編譯測試通過的容器可以批量地在生產環境中部署,包括VMs(虛擬機)、bare metal、OpenStack 集群和其他的基礎應用平臺。
??容器是完全使用沙箱機制,相互之間不會有任何接口。
Docker要解決什么問題?
一、環境配置的難題
- 軟件開發最大的麻煩事之一,就是環境配置。用戶計算機的環境都不相同,你怎么知道自家的軟件,能在那些機器跑起來?
- 用戶必須保證兩件事:操作系統的設置,各種庫和組件的安裝。
舉例來說,安裝一個 Python 應用,計算機必須有 Python 引擎,還必須有各種依賴,可能還要配置環境變量。
- 環境配置如此麻煩,換一臺機器,就要重來一次,曠日費時。很多人想到,能不能從根本上解決問題,軟件可以帶環境安裝?也就是說,安裝的時候,把原始環境一模一樣地復制過來。
二、虛擬機
??虛擬機(virtual machine)就是帶環境安裝的一種解決方案。它可以在一種操作系統里面運行另一種操作系統,比如在 Windows 系統里面運行 Linux 系統。應用程序對此毫無感知,因為虛擬機看上去跟真實系統一模一樣,而對于底層系統來說,虛擬機就是一個普通文件,不需要了就刪掉,對其他部分毫無影響。
虛擬機的缺點
- 資源占用多
??虛擬機會獨占一部分內存和硬盤空間。它運行的時候,其他程序就不能使用這些資源了。哪怕虛擬機里面的應用程序,真正使用的內存只有 1MB,虛擬機依然需要幾百 MB 的內存才能運行。
- 冗余步驟多
??虛擬機是完整的操作系統,一些系統級別的操作步驟,往往無法跳過,比如用戶登錄。
- 啟動慢
??啟動操作系統需要多久,啟動虛擬機就需要多久。可能要等幾分鐘,應用程序才能真正運行。
三、Linux 容器
??由于虛擬機存在這些缺點,Linux 發展出了另一種虛擬化技術:Linux 容器(Linux Containers,縮寫為 LXC)。
??Linux 容器不是模擬一個完整的操作系統,而是對進程進行隔離。或者說,在正常進程的外面套了一個保護層。對于容器里面的進程來說,它接觸到的各種資源都是虛擬的,從而實現與底層系統的隔離。
Linux 容器的優勢
- 啟動快
??容器里面的應用,直接就是底層系統的一個進程,而不是虛擬機內部的進程。所以,啟動容器相當于啟動本機的一個進程,而不是啟動一個操作系統,速度就快很多。
- 資源占用少
??容器只占用需要的資源,不占用那些沒有用到的資源;虛擬機由于是完整的操作系統,不可避免要占用所有資源。另外,多個容器可以共享資源,虛擬機都是獨享資源。
- 體積小
??容器只要包含用到的組件即可,而虛擬機是整個操作系統的打包,所以容器文件比虛擬機文件要小很多。
總之,容器有點像輕量級的虛擬機,能夠提供虛擬化的環境,但是成本開銷小得多。
Docker是什么?
??Docker 屬于 Linux 容器的一種封裝,提供簡單易用的容器使用接口。它是目前最流行的 Linux 容器解決方案。
??Docker 將應用程序與該程序的依賴,打包在一個文件里面。運行這個文件,就會生成一個虛擬容器。程序在這個虛擬容器里運行,就好像在真實的物理機上運行一樣。有了 Docker,就不用擔心環境問題。
??總體來說,Docker 的接口相當簡單,用戶可以方便地創建和使用容器,把自己的應用放入容器。容器還可以進行版本管理、復制、分享、修改,就像管理普通的代碼一樣。
Docker 的用途
Docker 的主要用途,目前有三大類。
- 提供一次性的環境。比如,本地測試他人的軟件、持續集成的時候提供單元測試和構建的環境。
- 提供彈性的云服務。因為 Docker 容器可以隨開隨關,很適合動態擴容和縮容。
- 組建微服務架構。通過多個容器,一臺機器可以跑多個服務,因此在本機就可以模擬出微服務架構。
參考來源:
阮一峰的網絡日志 http://www.ruanyifeng.com/blog/2018/02/docker-tutorial.html

浙公網安備 33010602011771號