Leaderboard ads banner

Khác nhau giữa Vagrant và Docker

Theo mình hiểu thì cả Vagrant và Docker đều là các công nghệ tạo máy ảo để giả tạo môi trường với ưu điểm so với các hệ thống virtual machine cũ như VMware ở chỗ chúng cho phép đặt cấu hình cho máy ảo ở một file riêng biệt và do đó việc cấu hình có thể được thực dễ dàng bởi các dev khác (trên một host khác) qua việc sử dụng lại các tập tin này mà không cần phải cấu hình thủ công.

Ngoài tính năng trên ra thì hai công nghệ này còn có những điểm nào khác nhau nữa hay không? Mong mọi người cho ý kiến tư vấn giúp mình.

3 Câu Trả Lời

Nguyễn Duy Nguyễn Duy

Virtual Machine: Virtual machine hay còn gọi là phần mềm tạo máy ảo. Phần mềm này cho phép tạo lập và chạy một hệ điều hành (hay máy ảo) trên máy chủ (host machine). Ví dụ máy tính bạn chạy Windows nhưng cần dev app chạy trên Linux thì bạn có thể sử dụng VirtualBox để tạo một máy ảo Linux trên Windows. VirtualBox là phần mềm để tạo máy ảo phổ biến hiện nay.

Vagrant: Là một công nghệ dựa trên nền ảng của Virtual Machine tuy nhiên cung cấp thêm tính năng để cấu hình và thiết lập môi trường cho các máy ảo (hay các box). Ví dụ team của bạn có 15 người đang sử dụng máy Windows nhưng cần phát triển ứng dụng chạy trên server Linux. Server này cần cài đặt Apache web server, PHP, MySQL... Sử dụng Vagrant bạn có thể tạo một box có sẵn các phần mềm trên (và cấu hình cần thiết nếu có) để khi 15 team member muốn tạo môi trường giả lậ họ chỉ cần sử dụng box bạn đã cấu hình mà không cần tạo box và cài lại từng phần mềm một (tưởng tương team có 100 nhân viên thì việc này sẽ giảm thiểu được nhiều thời gian đáng kể).

Docker: Đây là công nghệ đang được đánh giá là tương lai của công nghệ ảo hoá (future of virtualization). Khác biệt lớn của Docker và Vagrant (hay Virtual Machine nói chung) đó là tiết kiệm đáng kể resource sử dụng. Với docker bạn có thể chạy 20 container (tương tự như một hệ điều hành nhỏ) trên cùng một máy host (host machine) điều mà nếu sử dụng Vagrant sẽ cần một máy chủ với cấu hình cực khủng. Docker làm được điều này là bởi vì khác với Virtual Machine ở chỗ thay vì tách biệt giữa hai môi trường guest và host, thì các container của Docker chia sẻ các resource với host machine.

Michael Phạm Michael Phạm

Virtual Machine: Bạn có thể hiểu đơn giản là nó tạo 1 máy ảo trên máy thật tuy nhiên khi bạn muốn tạo 1 máy ảo thì máy thật của bạn sẽ phải chia sẻ tài nguyên phần cứng cho nó. VD bạn có 1 cái máy tính lên nô vô đời mới RAM 8GB chẳng hạn :D , và bạn muốn tạo ra 1 chiếc máy ảo có ram 2GB, thì khi đó máy thật của bạn sẽ phải chia sẻ cho máy ảo 2GB ram (dù máy ảo có dùng hết hay không thì máy thật cũng mất 2GB RAM cho máy ảo) . Và các máy ảo này sử dụng lõi độc lập, tức là bạn tạo 2 cái máy giống hệt nhau thì tốn 2 lần tài nguyên và tốn 2 lần cài.
Vagrant: Cái này cũng tương tự như Virtual Machine, nhưng chỉ khác ở chỗ là nó cho phép tạo 1 box (khái niệm này được hiểu như tạo ra 1 cái khung mẫu) để có thể dùng lại. Vagrant tiến hóa hơn Virtual Machine ở chỗ là nếu bạn muốn tạo ra 100 máy giống hệt nhau (đều có 69 phần mềm để chạy được video jav - ví dụ thế) thì bạn chỉ cần tạo ra cái "box" 1 lần , rồi đem nó đi photocopy là được , không cần tạo thủ công lại như Virtual Machine nữa. Tuy vậy nếu bạn muốn tạo ra 10 cái máy có ram 2GB trên máy thật thì bạn bố mẹ bạn vẫn phải bán bò thôi :))
Docker: thì nó là 1 bước lên mây luôn , nó vượt qua tầm hiểu biết của nhân loại , nó mang 1 cái gì đó vĩ mô :v , nói thế thôi chứ Docker khác biệt với 2 cái kia là nó dùng chung nhân , nghĩa là bạn có thể tạo 10 cái máy ảo mà bố mẹ bạn không phải bán bò để mua máy xin (tới giờ về rồi nên mình viết ngắn) :))

Vu Hiep Vu Hiep

thằng docker nó có nhiều container mỗi container được tạo khi bạn chạy file image của nó. Mỗi container coi như một máy ảo bạn có thể cài đặt các phần mềm lên từng container. Từ container này bạn có thể tạo riêng một file image cho docker

Nội dung tối thiểu 100 ký tự

Câu Hỏi Liên Quan