Trang Chủ

Tổng hợp kiến thức cần biết về Docker và Docker Swarm (Phần 2 – Khái niệm, lịch sử ra đời Docker)

I. Lý do ra đời

Ví dụ

Hãy tưởng tượng bạn code 1 cái ứng dụng, có 1 cái web server được viết bằng NodeJs, có database là PostgreSQL, sử dụng Redis để lưu trữ message,… Mỗi cái như này các bạn phải cài rất là nhiều thư viện, dependencies, đi kèm theo đó là những cái config.. Và khi các bạn code xong, muốn cho người dùng sử dụng thì các bạn phải deploy nó.

Trong môi trường deploy đó thì các bạn cũng phải cài đặt tất cả những cái này kèm với thư viện, config, dependencies của nó. Chỉ cần thiếu 1 thư viện hay 1 dependencies nhỏ thôi thì ứng dụng của các bạn cũng sẽ bị lỗi và k sử dụng được. Và nội cái việc set up và cài đặt tất cả những cái này thôi nó cũng đã mất rất nhiều thời gian rồi.

Thì đấy là cái vấn đề, làm sao mình có thể code 1 chỗ mà đưa nó được tới người dùng hay tới nhiều chỗ, nhiều môi trường khác nhau mà vẫn đảm bảo các thư viện, config, dependencies được cài đúng đắn.

Vấn đề này sẽ được giải quyết bởi Docker.

Công nghệ sử dụng

Để đạt được sự nhanh chóng và hiệu quả ở đây thì Docker đã sử dụng công nghệ Containerization với các container chung nhân OS với máy chủ host.

Container sẽ hoạt động giống như một application bình thường, khi cần tài nguyên để hoạt động, nó sẽ trực tiếp lấy từ máy host như một phần mềm bình thường chạy trên máy host

II. Lịch sử ra đời

Để hiểu rõ được công nghệ Containerization đem lại những lợi ích gì thì ta sẽ mang câu chuyện deployment quay ngược trở lại thời điểm lúc chúng ta chưa có công nghệ Containerization.

1. Thời đại Deploy theo cách truyền thống

2. Thời đại deploy ảo hóa

3. Thời đại triển khai Container

Các container tương tự như VM, nhưng chúng có tính cô lập để chia sẻ Hệ điều hành (HĐH) giữa các ứng dụng. Do đó, container được coi là nhẹ (lightweight). Tương tự như VM, một container có hệ thống tệp (filesystem), CPU, bộ nhớ, process space, v.v. Khi chúng được tách rời khỏi cơ sở hạ tầng bên dưới, chúng có thể khả chuyển (portable) trên cloud hoặc các bản phân phối Hệ điều hành.

Nói chung, sự khác biệt chính giữa VM và Container là: Virual Machine: chiếm luôn phần cứng máy host ngay từ khi cài. => ngốn tài nguyên, tốn thời gian thực thi, cồng kềnh Container: sử dụng các container như sử dụng application, chỉ lấy tài nguyên khi cần => nhanh, dễ dàng thiết lập và tránh lãng phí tài nguyên từ máy ảo khi không sử dụng

Tài liệu tham khảo

[1]. How node works

[2]. Docker docs

[3]. Docker là gì?

Chia sẻ bài viết ngay