You are on page 1of 4

Pham Quang Dinh @pqd0101 Follow Published Aug 6th, 2015 1:42 AM - 7 min read

 373  16  35
 3.6K  2  5

Ảo hoá sử dụng Container, những điều cơ bản cần


biết

 This post has been more than 5 years since it was last updated. 

1. Giới thiệu
Như các bạn đã biết, trong những năm gần đây khái niệm "Ảo hoá sử dụng container" được nhắc đến khá nhiều.
Vậy nó là cái gì, có những ưu điểm gì và sử dụng nó như thế nào. Bài viết này của mình xin được nêu những khái
niệm cơ bản về "ảo hoá sử dụng Container" và so sánh với "Ảo hoá truyền thống" để chúng ta có thể dễ dàng hình
dung. (lay2)

2. Ảo hoá truyền thống? (Hypervisor Virtualization)


Nói đến ảo hoá truyền thống, chúng ta có thể hình dung được ngay đó chính là cách sử dụng ảo hoá thông thường
mà người dùng hay lựa chọn như: VMWare, Virtual Box, Parallel...

Đây chính là giải pháp rất tốt khi chúng ta muốn chạy nhiều hệ điều hành cùng một lúc trên một máy. Với giải pháp
ảo hoá truyền thống. Toàn bộ hệ thống: từ Phần cứng (RAM, CPU, HDD...) cho đến Hệ điều hành đều được "ảo hoá".
Đem lại trải nghiệm sử dụng gần tương đương như một máy thật (hehe)

Một đặc điểm rất ưu thế nữa của giải pháp này đó là, chúng ta không cần quan tâm nhiều đến hệ điều hành của
máy chính (host system: máy được dùng để cài máy ảo) là hệ điều hành nào. Chỉ cần có nhu cầu cài hệ điều hành
bất kỳ mà "Máy Ảo" hỗ trợ là đều có thể cài được. VD trên Ubuntu nhưng chúng ta vẫn có thể cài được máy ảo
window XP, window 7, Fedora, kể cả là MacOS ... :what?:

Tuy nhiên, mặc dù có khá nhiều ưu điểm nhưng "máy ảo" lại tồn tại một nhược điểm rất lớn: Việc phải ảo hoá từ
phần cứng đến nguyên cả một hệ điều hành làm tiêu tốn một khoản tài nguyên không hề nhỏ của hệ điều
hành chủ (host system). Có thể lấy ví dụ dễ hiểu như sau: Nếu bạn đang chạy Ubuntu và có nhu cầu chạy service
vài chụ MB trên Fedora thôi thì bạn cũng phải tốn ít nhất: Vài GB cho hệ điều hành Fedora , vài trăm MB cấp cho
Ram Máy ảo, và 1 vài nhân của CPU cho CPU của máy ảo.

Điểm yếu nữa của "máy ảo truyền thống" đó là thời gian chạy service, chúng ta phải khởi động cả hệ điều hành ảo
mới chạy được service này. Và do đó thời gian startup, stop, hay restart nhanh cũng phải vài phút. Đây là sơ đồ
minh hoạ hoạt động của "máy ảo" trên máy chủ (host system) Từ những điểm yếu trên mà "Ảo hoá sử dụng

 +4  sinh ra như là một giải pháp hoàn hảo để chạy các service trên máy ảo mà tiêu tốntài•nguyên
Container"  • ít nhất.
•  • 
Đồng thời có performance cao nhất

3. Ảo hoá sử dụng Container


Ảo hoá sử dụng Container còn có cách gọi khác là "ảo hoá mức hệ điều hành" (operating system virtualization).
Chúng ta có thể thấy ngay sự khác nhau từ cái tên: một bên là "ảo hoá hệ điều hành" còn một bên là "máy ảo".

Ở đây, chúng ta không ảo hoá cả phần cứng , hệ điều hành "như thật" nữa mà chỉ ảo hoá môi trường. Các service
trong Container vẫn chạy chung hệ điều hành chủ ở phía dưới, chung Kernel nhưng môi trường chạy của các
service thì luôn được đảm bảo hoàn toàn độc lập với nhau như sơ đồ biểu diễn dưới đây:

Thuật ngữ "Container" ở đây được hiểu là khái niệm đóng gói. Một Container chứa đầy đủ application và tất các
các thành phần phụ thuộc như: các file Bins, các thư viện kèm theo để đảm bảo các ứng dụng có thể chạy độc lập
trong container đó. Như vậy mỗi Container ở đây được coi như một "máy ảo" mini (hehe)

Điểm mạnh lớn nhất của Container đó chính là "hiệu năng": Là ảo hoá nhưng Container lại rất nhẹ. Hệ điều hành
chủ quản lý các Container bằng Systemd hoặc Upstart. Do vậy, các Container ở đây như là môt process của hệ
thống. Chỉ mất vài giây để start, stop hay restart một Container, và khi các container ở trạng thái Idle (chờ) chúng
gần như không tiêu tốn tài nguyên CPU. Với một máy tính cấu hình thông thường, nếu chạy máy ảo truyền thống
chúng ta chỉ chạy được khoảng vài cái là cùng. Tuy nhiên nếu chạy bằng Container chúng ta có thể chạy vài chục
thậm chí đến cả vài trăm cái. (yeah)

Một điểm mạnh nữa của Container đó là tính di động và tính mở rộng: Chúng ta có thể tự tạo một Container từ các
template có sẵn, cài đặt môi trường, service, sau đó lưu trạng thái Container lại như là một "image"và triển khai
image này đến bất kỳ chỗ nào chúng ta mong muốn. Hiện có nhiều dịch vụ cung cấp cho chúng ta có thể lưu
Search Viblo    
Container lại trên Cloud như docker cực kỳ thuận tiện (tanghoa)

Điểm yếu có thể coi là duy nhất của "ảo hoá sử dụng Container" đó chính là giới hạn của việc ảo hoá hệ điều hành:
Do các Container sử dụng chung kernel với hệ điều hành chủ nên chúng ta chỉ có thể "ảo hoá" được các hệ điều
hành mà hệ điều hành chủ hỗ trợ. Ví dụ: Nếu hệ điều hành chủ là Linux thì chúng ta chỉ có thể ảo hoá được các hệ
điều hành nhân Linux như Lubuntu, OpenSuse, LinuxMint ... chứ không thể tạo được một container Window được.

4. Kết luận 
 +4   •  •  •  • 
"Ảo hoá sử dụng Container" hiện ngay đang được sử dụng ngày một rộng rãi. Những công ty tập đoàn lớn (đặc biện
là Google) đã triển khai giải pháp này trên hầu hết các dịch vụ của họ. Do vậy, tác giả nghĩ rằng sẽ không có gì bất
ngờ khi nói Container sẽ là tương lai của công nghệ "ảo hoá", dần thay thế giải pháp ảo hoá truyền thống.(lay2)

Nguồn tham khảo


http://www.linuxjournal.com/content/containers—not-virtual-machines—are-future-cloud?page=0,1

http://blog.smartbear.com/web-monitoring/why-containers-instead-of-hypervisors/

https://www.linux.com/component/content/article/186-virtualization/300057-containers-vs-hypervisors-choosing-
the-best-virtualization-technology-

Ruby Server Docker Web Server

All Rights Reserved

  

Related

Docker: Chưa biết gì đến biết dùng (Phần 1- Lịch sử) Phần 1: Giới thiệu về Kubernetes

Hoàn Kì Đặng Quyết Tiến


19 min read 3 min read
 99692  215  55 
 391  29418  23 1 
 12

[Tản mạn] Ảo hóa - Ai cũng biết nhưng cụ thể nó là gì ? Docker là gì và làm gì?

Đỗ Hoàng Minh Hưng Le Dinh Minh


37 min read 7 min read
 7792  11 7 
 19  19485 7 4 
 13

More from Pham Quang Dinh

5 điều cần chú ý khi viết Docker le [Swift4] Sử dụng UITextView để hiển thị text trong le
định dạng RichTextFile(rtf)
Pham Quang Dinh Pham Quang Dinh
3 min read 1 min read
 293 6 0 
3  313 2 0 
1

Câu chuyện về lần đầu viết Library "Poi" Chỉ 30 phút nhập môn truyền tin Client/Server trong iOS
app với "GAE/Go"
Pham Quang Dinh Pham Quang Dinh
2 min read 2 min read
 88 0 0 
1  382 0 0 
0

Comments

 +4   •  •  •  • 
Write Preview
Write Preview

Write a response...


Post Comment

Trần Đức Thành @thanhsm Aug 27th, 2015 12:28 AM

Có tài liệu nào hướng dẫn hay để tham khảo về việc triển khai nó như thế nào không anh ?

 0  | Reply Share 

Pham Quang Dinh @pqd0101 Aug 31st, 2015 11:18 PM

https://www.docker.com/ bạn tham khảo ảo hoá bằng docker tại đây này. Hoặc đọc một vài bài viết về docker trong viblo là có thể triển khai
ngon lành

 0  | Reply Share 

RESOURCES SERVICES MOBILE APP

Posts Organizations Viblo Code

Questions Tags Viblo CV

Videos Authors Viblo CTF

Discussions Recommend System Viblo Learning


LINKS
Tools Machine Learning

System Status   

© 2021 Viblo. All rights reserved. About Us Feedback Help FAQs RSS Terms


 +4   •  •  •  • 

You might also like