HomeOur Team
Docker - Architecure
Articles
Docker - Architecure
hung.nguyen
hung.nguyen
September 22, 2020
3 min

1- Mô hình server đời đầu

Như chúng ta đã biết mô hình server đời đầu bao gồm: 1-Physical server 1-Hệ điều hành 1- Application

Rõ ràng nhận thấy mô hình nảy sinh rất nhiều vấn đề như : Lãng phí tài nguyên khi hệ thống không tận dụng được hết 1 con server có cầu hình cao(RAM, CPU, HHD) Mở rộng hệ thống cũng gặp khó khăn khi nếu muốn bạn phải thuê thêm server, rồi lại cấu hình.

2- Vitualization

Để khắc phục 2 yếu điểm trên người ta xây dựng 1 mô hình server được gọi là (vitualization). Đó là mô hình ảo hóa, tạo máy ảo, ổ đĩa ảo hay ram ảo. Lợi ích của ảo hóa giúp cho chúng ta có thể chạy được nhiều thứ hơn trên một chiếc máy tính duy nhất, từ đó tiết kiệm chi phí mua sắm thiết bị mới.

Kiến trúc của máy ảo

Tuy nhiên công nghệ ảo hóa cũng có những bất lợi như: Lãng phí tài nguyên (giả sử chạy máy ảo 4 máy ảo linux khi bạn có 1 máy chủ cấu hình (512G SSD và 16GB RAM). Nếu bạn cấp cho mỗi máy ảo linux 64G SSD và 2G RAM). Thì rõ ràng bạn đã mất 256G và 8G RAM để chứa 4 máy ảo linux Tốn thời gian thực thi ( thời gian khởi động, tắt ). Với những bất cập như vậy người ta lại xây dụng mô hình containerlization[Docker]. Vậy công nghệ container và vitrualization có khác nhau ở chỗ nào?

Kiến trúc container

Kiến trúc máy ảo như image dưới

Với công nghệ này chúng ta có thể sinh ra được nhiều máy ảo như vitualization nhưng điều đặc biệt là tất cả máy ảo đều dùng chung 1 máy server. Như vậy việc sử dụng tài nguyên sẽ được tối ưu hơn. Như ta đã biết công nghệ ảo hóa (virtualization technology) là phương pháp đóng gói một hệ điều hành cùng toàn bộ các ứng dụng của nó thành một gói máy ảo.

Trong khi đó container chỉ đóng gói ứng dụng mà môi trường cần thiết để chạy ứng dụng.

Do đó container sẽ nhẹ hơn và sử dụng ít tài nguyên hơn máy ảo. Mỗi máy ảo chạy một hệ điều hành riêng, với tài nguyên phần cứng riêng, độc lập với máy chủ vật lý. Trong khi đó các container cùng nhau chia sẻ hạt nhân hệ điều hành, với những phân vùng mà hệ điều hành chia sẻ các container chỉ được đọc, và mỗi container sở hữu một phân vục riêng có thể ghi trong đó.

3- Docker là gì?

Docker là một nền tảng mở (open platform), dùng để phát triển và deploy ứng dụng. Docker cung cấp một tùy chọn để chạy một ứng dụng trong các container nằm bên cạnh nhau Kiến trúc của docker như image dưới

Giả lập môi trường trên server ở dưới máy local

Như chúng ta đã biết việc chạy code ở local ok nhưng khi lên server lại chết. Nguyên nhân có rất nhiều nhưng phần lớn là do dự khác biệt về môi trường giữa local và server.

Do đó Docker có thể tạo ra 1 môi trường giống như trên server và chạy thử chương trình ở đó.

Dùng thử hệ điều hành mới Trải nhiệm môi trường lập trình mới : Bạn có thể tạo 1 docker conatiner để thiết lập 1 môi trường.

Chia sẻ môi trường làm việc : Khi bạn tạo 1 docker container bạn có thể dễ dàng chia sẻ cho các thành viên khác trong nhóm .

Các thành phần cơ bản của Docker

  1. Image: Là file ảnh, file nền của một hệ điều hành, một nền tảng, một ngôn ngữ (vd: ubuntu image, mysql image…) và nó là dạng file read only file tức là file chỉ đọc. Note: Bạn có thể tạo riêng image cho mình và 1 image có thể tạo từ nhiều image khác. VD : bạn tạo 1 image chạy ubutu và trong đó có sẵn ruby và rails.
  2. Container: Container là 1 máy ảo và được tạo từ image. Các thay đổi trong máy ảo như cài đặt phần mêm, tạo file… đều được lưu ở 1 lơp layout được gọi là writabe file-layer
  3. Docker engine có nhiệm vụ quản lý việc bạn tạo image, chạy container, thêm sửa xóa image, container
  4. Docker Hub Chia sẻ các image

References:

https://viblo.asia/p/docker-co-ban-part-1-RnB5p73wlPG


Tags

#architecure#docker#092020
hung.nguyen

hung.nguyen

Developer

Related Posts

Network in Docker
Network in Docker
October 26, 2020
1 min
© 2021, All Rights Reserved.

Quick Links

HomeOur Team

Social Media