Vagrant 和 Docker的使用場景和區別

時間 2021-05-07 02:01:18

1樓:許成

樓主的提問是不對的,你應該問docker和vm的區別,或者問vagrant和docker-compose的區別,而docker是虛擬化技術,而vagrant只是vm編排工具

2樓:配角不配

其實,真有人會在生產環境使用vagrant嗎?還必須配合virtualbox或者vmplay虛擬機器才能使用。在生產環境裝這些軟體不會被專案經理打死嗎?

我還以為vagrant只能應用於本地開發環境的搭建。為了統一團隊間的開發環境。

3樓:hoah

vagrant是用來更好的管理你的虛擬機器的

而docker是通過將應用打包到輕量級容器,而實現構建和部署的工具,更加輕量級。

4樓:

本質區別

Vagrant並不提供虛擬化技術,本質上是乙個虛擬機器外掛程式,通過虛擬機器的管理介面來管理虛擬機器,讓使用者更輕鬆的進行一些常用配置,比如:CPU/Memory/IP/DISK等分配。並且提供了一些其它的管理操作:

比如開機執行指定命令,映象二次打包,外掛程式編寫等等。

vagrant官方有介紹

To achieve its magic, Vagrant stands on the shoulders of giants.Machines are provisioned on top of VirtualBox, VMware, AWS, orany other provider. Then, industry-standard provisioning tools such as shell scripts, Chef, or Puppet, can be used to automatically install and configure software on the machine.

而docker是乙個容器引擎,每乙個例項是乙個相對隔離的空間,與宿主機共享作業系統核心,並且共享宿主機資源。相對於披著虛擬機器皮的vagrant,docker更加輕量,消耗更少的資源。

貼一張docker官方介紹圖

關於虛擬機器和docker的區別這邊文章有更形象的解釋:一篇不一樣的docker原理解析 - uncle creepy的文章 - 知乎專欄

應用場景

關於應用場景沒有絕對,把兩個東西都用熟,自己覺得用哪個方便用哪個好管理就用哪個。

vagrant

既然vagrant本質是虛擬機器外掛程式,那麼它的應用場景就是,節省你用原生虛擬機器管理軟體的時間。

原來我們新增一台虛擬機器需要配置好記憶體、硬碟、CPU等,然後新增iso,安裝。建立使用者,等等。一套下來好幾十分鐘是吧?聰明點你可能會想到複製乙個建立好的映象然後貼上。

但這一切vagrant都幫你想好了

安裝vagrant後你只需要6步就能建立一台新的虛擬機器,其中兩步是建立資料夾和切換資料夾

$ mkdir vagrant_getting_started

$ cd vagrant_getting_started

$ vagrant box add hashicorp/precise32

$ vi Vagrantfile

#新增配置

$ vagrant init

從安裝到建立一台新的虛擬機器就成功了。如果你想要再新增一台虛擬機器,你只需要執行最後兩步,新增乙個不同名字的配置就能再新建一台虛擬機器。還支援映象、開機自動執行指令碼、外掛程式編寫等。

docker

docker主要應用於解決環境依賴以及為應用程式提供乙個相對隔離的空間,乙個例項像作業系統裡執行的乙個程式。

原來部署一套環境是不是得自己編寫自動化部署依賴環境以及程式的指令碼?如果有兩個依賴同一程式或庫的不同版本怎麼辦?絕對路徑?軟連線?

docker能很好的解決你的煩惱。把需要的依賴環境打包成乙個映象,再把程式放映象裡面執行。

總的來說

vagrant更適合給開發大爺們創造乙個統一的開發、測試、接近於完全隔離的環境,以及提高對高配機的閒置利用。

docker更方便地解決了同一機器上的環境隔離,以及提高運維鍋們解決部署時環境依賴的效率。

5樓:xdays

Vagrant是對傳統虛擬機器的一層封裝,能讓你更方便的使用虛擬機器,主要解決的問題是開發和運維人員的環境配置問題;Docker是基於容器技術的新一代虛擬化技術,其解決的是開發,測試和運維一整套流程相關的問題。兩者解決的問題有些相像,但是解決的方案不是在乙個層次上的。

docker中的exec和attach命令的區別?

bin ruan docker exec Run a command in a running container,翻譯過來就是在乙個正在執行的容器中執行命令,exec是針對已執行的容器例項進行操作,在已執行的容器中執行命令,不建立和啟動新的容器,退出shell不會導致容器停止執行。docker a...

Docker 安裝的Ubuntu 和 虛擬機器安裝的Ubuntu 有什麼區別?

數人雲 這個問題的其實是容器技術和虛擬機器技術的區別,虛擬機器執行的ubuntu是乙個完整的資源強隔離的作業系統,啟動時需要完整的引導載入的過程。容器執行的ubutun並非完整的作業系統,使用的是宿主機的linux核心,啟動時沒有引導的過程,可以秒起,是執行在宿主機上的乙個程序。 簡單的說 虛擬機器...

docker中的linux容器代表著什麼?

迷茫中前行 容器是乙個與宿主機系統共享核心但是與系統中的其他程序資源相隔離的執行環境。windows10本質上是嵌入了乙個linux核心 建議你直接使用這些容器,再對比非容器服務的區別。而不是看別人的轉述。容器也好,虛擬機器也罷,還有基本的程序,是對計算機資源隔離的不同實現方案。都說容器要比虛擬機器...