Docker 是一個開源的應用容器引擎,可以輕鬆的為任何應用建立一個輕量級的、可移植的、自給自足的容器。
簡單的理解,Docker類似於集裝箱,各式各樣的貨物,經過集裝箱的標準化進行託管,而集裝箱和集裝箱之間沒有影響。也就是說,Docker平臺就是一個軟體集裝箱化平臺,這就意味著我們自己可以構建應用程式,將其依賴關係一起打包到一個容器中,然後這容器就很容易運送到其他的機器上進行執行,而且非常易於裝載、複製、移除,非常適合軟體彈性架構。就像Docker的logo一樣。
Docker&Vmware區別:
虛擬機器執行多個相互隔離的應用時,如下圖:
Docker容器的相同設定:
總結:
兩者有不同的使用場景。虛擬機器更擅長於徹底隔離整個執行環境(Linux圖片就可以看出來)。例如,雲服務提供商通常採用虛擬機器技術隔離不同的使用者。而Docker通常用於隔離不同的應用,例如前端,後端以及資料庫。所以要根據不同的場景靈活使用。
Docker 是一個開源的應用容器引擎,可以輕鬆的為任何應用建立一個輕量級的、可移植的、自給自足的容器。
簡單的理解,Docker類似於集裝箱,各式各樣的貨物,經過集裝箱的標準化進行託管,而集裝箱和集裝箱之間沒有影響。也就是說,Docker平臺就是一個軟體集裝箱化平臺,這就意味著我們自己可以構建應用程式,將其依賴關係一起打包到一個容器中,然後這容器就很容易運送到其他的機器上進行執行,而且非常易於裝載、複製、移除,非常適合軟體彈性架構。就像Docker的logo一樣。
Docker&Vmware區別:
虛擬機器執行多個相互隔離的應用時,如下圖:
基礎設施(Infrastructure)。比如:個人pc或者伺服器。主機作業系統(Host Operating System)。個人電腦之上,執行的MacOS或者Windows系統。虛擬機器管理系統(Hypervisor)。利用Hypervisor,可以在主機作業系統之上執行多個不同的從作業系統。比如安裝的VirtualBox和VMWare。從機作業系統(Guest Operating System)。vmware裡面安裝多個Centos7的系統,假設執行3個相互隔離的應用,則需要啟動3個Linux系統,也就是3個虛擬機器。這些虛擬機器都非常大,如果一個虛擬機器有20GB,那麼意味著它們將佔用60GB的磁碟空間。更糟糕的是,它們還會消耗很多CPU和記憶體。各種依賴。每一個從作業系統都需要安裝許多依賴。如果你的的應用需要連線PostgreSQL的話,則需要安裝libpq-dev;如果你使用Ruby的話,應該需要安裝gems,都會需要安裝對應的依賴庫。應用。安裝依賴之後,就可以在各個從作業系統分別執行應用了,這樣各個應用就是相互隔離的。Docker容器的相同設定:
基礎設施(Infrastructure)。比如:個人pc或者伺服器。主機作業系統(Host Operating System)。所有主流的Linux發行版都可以執行Docker。對於MacOS和Windows,也有一些辦法”執行”Docker。Docker守護程序(Docker Daemon)。Docker守護程序取代了Hypervisor,它是執行在作業系統之上的後臺程序,負責管理Docker容器。各種依賴。對於Docker,應用的所有依賴都打包在Docker映象中,Docker容器是基於Docker映象建立的。應用。應用的原始碼與它的依賴都打包在Docker映象中,不同的應用需要不同的Docker映象。不同的應用執行在不同的Docker容器中,它們是相互隔離的。總結:
兩者有不同的使用場景。虛擬機器更擅長於徹底隔離整個執行環境(Linux圖片就可以看出來)。例如,雲服務提供商通常採用虛擬機器技術隔離不同的使用者。而Docker通常用於隔離不同的應用,例如前端,後端以及資料庫。所以要根據不同的場景靈活使用。