Trong bài lần trước mình đã giới thiệu với mọi người về Vagrant (Nếu bạn nào chưa đọc hoặc đã quên :>, mọi người có thể tham khảo tại đây). Sau khi đọc xong, mọi người có thể sẽ đặt câu hỏi: “vagrant và docker có giống nhau không? Nếu không thì khác nhau ở điểm nào?”. Trong bài viết lần này, mính sẽ cung cấp cho mọi người một vài góc nhìn. Bắt đầu ngay thôi nào.

Đầu tiên, chúng ta sẽ nêu qua một số điều cơ bản về cả hai công cụ vagrant và docker.

 

Vagrant

Vagrant là một công cụ mã nguồn mở quản lý máy ảo. Khi sử dụng vagrant để thiết lập một máy ảo, bạn sẽ chạy một tập lệnh giống nhau trên mỗi máy, bao gồm những nội dung như sau:

  • Cài đặt chính xác những chương trình mà bạn cần, yêu cầu
  • Thiết lập chính xác quyền cho người dùng
  • Cấu hình mọi thứ bạn cần

Về cơ bản, vagrant giúp bạn chạy ứng dụng của của bạn tương tự như chạy trên máy bạn, máy của bất cứ ai, cũng như trong môi trường phát triển và sản phẩm. Cũng có thể đẩy file vagrant lên trên Git, và bất cứ ai cũng có thể kéo nó về và khởi chạy.

 

Docker

Một trong những hạn chế của việc sử dụng Vagrant là phải khởi chạy toàn bộ máy ảo để chạy ứng dụng của mình. Việc này rất tốn thài nguyên và có thể mất nhiều thời gian để thiết lập và chạy các tập lệnh.

Docker có một cách tiếp cần khác. Bạn sử dụng Dockerfile để tạo ra docker image. Bên trong image này chứa:

  • Toàn bộ mã nguồn của bạn
  • Cái đặt mọi thứ bạn cần
  • Bất cứ cấu hình nào bạn cần

Về cơ bản, đây là ứng dụng hoàn chỉnh của bạn với tất cả các phần phụ thuộc được gói gọn trong một gói(package). Sau đó, bạn có thể khởi chạy image đó dười dạng container với bất cứ máy nào có sử dụng Docker miễn là đáp ứng đủ về sức mạnh xử lý và RAM.

 

Một số điểm khác chính giữa Vagrant và Docker

  Vagrant Docker
Cách tiếp cận Thiếp lập một môi trường có thể sử dụng lại, có thể dự đoán được để khởi chạy ứng dụng. Bạn chạy chương trình của mình trên một môi trường và có thể mong đợi nó hoạt động một cách ổn định Cho phép tạo image từ ứng dụng của bạn. Bạn sử dụng Docker image để xây dựng một môi trường và bạn có thể chạy ở mọi nơi nếu có sử dụng Docker.

 

Bảo mật Máy ảo hoàn toàn khép kín và biệt lập. Vì vậy, nó không chia sẻ tài nguyên với các máy ảo khác vì chúng có hệ điều hành riêng Docker cũng bị cô lập nhưng đều truy cập vào cùng hệ điều hành khiến ranh giới bảo mật khó nắm bắt. Tuy nhiên, nếu tính bảo mật của một container bị vi phạm, thì những container khác sẽ không bị ảnh hưởng vì các container hoàn toàn cách ly với nhau
Cài đặt Để cài đặt Vagrant, bạn cần cài đặt một bền tảng hỗ trợ khởi tạo máy áo như Virtual Box Mặc dù cách tiếp cận có vẻ đơn giản, các nhà phát triển Docker cho biết việc cài đặt và sử dụng Docker khó khăn hơn Vagrant
Phân tách tài nguyên Vagrant cho phép bạn cô lập hoàn toàn tất cả các tài nguyên cần thiết. Tuy nhiên, so với Docker, ban đầu nó sẽ đòi hỏi cung cấp nhiều tài nguyên hơn Docker được xây dựng trên công nghệ container nhanh hơn và ít tốn tài nguyên hơn so với máy ảo. Các container có thể được xử lý trong một phần nghìn giây thay vì vài phút và yêu cấu ít RAM hơn (megabyte thay vì gigabyte).

 

Thời gian khởi chạy Việc tạo một máy ảo tốn khá nhiều công sức và thời gian, điều này có thể làm chậm thời gian khởi chạy một chút Docker sẽ vượt trội hơn về tiêu chí này vì nó tốn it tài nguyên hơn và bạn có thể tạo Docker image nhanh hơn máy ảo Vagrant
Giới hạn Không có giới hạn về hệ điều hành Docker có thể giúp xây dựng và khởi chạy container trên Linux, windows, MacOS
Kích thước 1GB+ 100MB+

 

Sử dụng Docker với Vagrant

Hiện nay, bạn hoàn toàn có thể sử dụng Docker và Vagrant cùng với nhau. Sử dụng docker như một “provisioner” điều này sẽ giúp chuẩn bị môi trường: xây dựng và kéo image, chạy container nếu bạn cần nhiều container chạy cho máy vagrant của bạn. Mặt khác, sử dụng Docker như một “provider” chạy máy Vagrant trên Docker container (thay vì phải chạy trên máy ảo – VirtualBox, VMWare).

 

Tóm lại

Như vậy trong bài hôm nay chúng ta đã đi qua một vài đặc điểm, trường hợp sử dụng Vagrant và Docker trong phát triển phần mềm. Ngoài ra chung ta có thể sử dụng kết hợp cả Vagrant và Docker.

Mặc dù bài viết khá nhiều lý thuyết và khô khan, nhưng cảm ơn mọi người vì đã dành thời gian đọc bài chia sẻ này.

370 lượt xem