Docker Là Gì

Docker là công cụ được xây dựng để giúp phát triển, chạytriển khai các ứng dụng một cách dễ dàng hơn thông qua việc sử dụng các container. Mỗi container cho phép nhà phát triển đóng gói một ứng dụng với tất cả các dependency cần có để chạy ứng dụng.

Khi phát triển và chạy một ứng dụng phần mềm, các lập trình viên thường sẽ cần cài đặt các gói phần mềm hoặc thư viện khác nhau (gọi chung là dependency). Ví dụ khi tạo một ứng dụng web thì chúng ta sẽ cần cài đặt một web server, cơ sở dữ liệu và ngôn ngữ lập trình như PHP, Ruby hay Java... Đối với các dự án phần mềm có nhiều lập trình viên tham gia mỗi người sử dụng một loại máy tính chạy hệ điều hành khác nhau như Linux, Mac và Windows hoặc có thể các máy có cùng hệ điều hành tuy nhiên mỗi máy đã có sẵn các phần mềm trên nhưng khác nhau về phiên bản. Lúc này việc thống nhất một trường phát triển phần mềm sẽ yêu cầu các lập trình viên lựa chọn một trong các phương án sau:

  • Cài lại toàn bộ các dependency sao cho thống nhất.
  • Công ty sẽ mua lại toàn bộ dàn máy tính mới với cấu hình như nhau cho tất cả mọi người.
  • Sử dụng phần mềm máy ảo (virtual machine) để tạo máy ảo với cùng môi trường thống nhất.

Trong các cách trên thì cách thứ 3 được sử dụng rất phổ biến do thiết kiệm cả về chi phí và thời gian. Tuy nhiên nhược điểm của máy ảo đó là chúng quá tốn quá nhiều tài nguyên của host (là các máy tính của mỗi lập trình viên) và việc vận hành chúng đòi hỏi host phải có cấu hình đủ mạnh.

Nếu như phần mềm này lại bao gồm nhiều service khác nhau chạy trên các môi trường khác nhau nữa thì việc sử dụng máy ảo không khả thi do lúc này việc chạy nhiều máy ảo cùng một lúc trên một host sẽ khiến chúng chạy rất chậm (ngay cả với các máy tính có cấu hình mạnh).

Docker được ra đời để giải quyết bài toán trên. Khác với máy ảo, Docker sử dụng công nghệ container để tạo ra một môi trường biệt lập trên host, tuy nhiên các container này vẫn chia sẽ các tài nguyên với host mà không chiếm dụng hoàn toàn như máy ảo.

So sánh Docker và Virtual Machine

Chính vì vậy bạn có thể chạy hàng chục container trên cùng một host mà không sợ ảnh hưởng tới performance của host.

Ngoài ra, do ưu điểm về việc sử dụng tài nguyên nên Docker không những được sử dụng ở môi trường developer và test mà nó còn được sử dụng chính trên môi trường production để giúp chúng ta có thể nhanh chóng triển khai (deploy) các ứng dụng phần mềm.

Một công nghệ khác đã từng khá phổ biến trước đây dựa trên Virtual Machine để deploy ứng dụng trên môi trường production đó là Vagrant. Tuy nhiên do nhược điểm về việc sử dụng tài nguyên nên đã nhanh chóng bị thay thế bởi Docker.

Nội dung không được để trống

Wiki Liên Quan