1. Trang chủ
  2. » Luận Văn - Báo Cáo

Tìm hiểu docker và xây dựng ứng dụng minh họa

42 8 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Tìm hiểu Docker Và Xây Dựng Ứng Dụng Minh Họa
Tác giả Mai Phúc Tâm
Người hướng dẫn ThS. Nguyễn Công Hoan
Trường học Trường Đại học Công nghệ Thông tin - Đại học Quốc gia TP Hồ Chí Minh
Chuyên ngành Công nghệ phần mềm
Thể loại Báo cáo đồ án
Năm xuất bản 2023
Thành phố Tp Hồ Chí Minh
Định dạng
Số trang 42
Dung lượng 2,62 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Phạm vi nghiên cứu Đồ án nghiên cứu tập trung vào việc ảo hoá của Docker, với công nghệ đóng gói cácthư viện và ứng dụng, cũng như việc quản lý, triển khai và bảo mật an ninh các contain

Trang 1

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN

KHOA CÔNG NGHỆ PHẦN MỀM

BÁO CÁO ĐỒ ÁN 1 TÌM HIỂU DOCKER VÀ XÂY DỰNG ỨNG DỤNG

MINH HỌA

Giảng viên hướng dẫn:

ThS Nguyễn Công Hoan Lớp: SE121.N11.PMCL

Sinh viên thực hiện:

Tp Hồ Chí Minh, 2023

Trang 2

LỜI CẢM ƠN

Đầu tiên, em gửi lời cảm ơn chân thành đến tập thể quý thầy cô trường Đại họcCông nghệ thông tin – Đại học Quốc gia Tp Hồ Chí Minh và quý thầy cô khoa Côngnghệ phần mềm đã giúp cho em có những kiến thức cơ bản làm nền tảng để thực hiện đềtài này

Đặc biệt, em xin gửi lời cảm ơn và lòng biết ơn sâu sắc nhất tới thầy Nguyễn CôngHoan đã trực tiếp hướng dẫn tận tình, sửa chữa và đóng góp nhiều ý kiến quý báu giúp

em hoàn thành báo cáo môn học của mình, dù cho em không thể gặp thầy nhiều lần được

Trong thời gian một kỳ thực hiện đề tài, em đã vận dụng những kiến thức nền tảng

đã tích lũy đồng thời kết hợp với việc học hỏi và nghiên cứu những kiến thức mới Dùthời gian chuẩn bị khá ít ỏi, em vận dụng những gì đã thu thập được để hoàn thành mộtbáo cáo đồ án một cách tốt nhất Sai sót chắc chắn sẽ xảy ra, chính vì vậy, em rất mongnhận được những sự góp ý từ phía các thầy cô nhằm hoàn thiện những kiến thức mà em

đã học tập và là hành trang để em có thể thực hiện tiếp các đề tài khác trong tương lai

Thành phố Hồ Chí Minh, tháng 7 năm 2023

Sinh viên

Mai Phúc Tâm

Trang 3

NHẬN XÉT CỦA GIẢNG VIÊN

……… …

……… ……

……… ………

……… …………

……… ………

……… ………

……… ………

……… ………

……… ………

……… ………

……… ………

……… ………

……… ………

……… ………

……… ………

……… ………

……… ………

……… ………

……… ………

……… ………

……… ………

……… ………

……… ………

……… ………

……… ………

……… ………

……… ………

Trang 4

Mục lục

Table of Contents

LỜI CẢM ƠN 2

NHẬN XÉT CỦA GIẢNG VIÊN 3

Chương 1 GIỚI THIỆU CHUNG 7

1 Lý do chọn đề tài 7

1.1 Về Docker 7

2 Phạm vi nghiên cứu 7

3 Nội dung nghiên cứu 7

4 Kết quả hướng tới 8

5 Công cụ sử dụng 8

Chương 2 DOCKER 9

1 Giới thiệu về Virtualization (Công nghệ ảo hoá) 9

1.1 Khái niệm 9

1.2 Lợi ích 10

1.3 Hardware Virtualization (Ảo hoá phần cứng) 11

1.3.1 Khái niệm 11

1.3.2 Khác biệt giữa công nghệ ảo hoá và ảo hoá phần cứng 11

1.3.3 Các thành phần của ảo hoá phần cứng 11

1.3.4 Cách thức hoạt động của công nghệ ảo hoá phần cứng 11

1.3.5 Các loại ảo hoá phần cứng 12

1.4 Software Virtualization (Ảo hoá phần mềm) 13

1.4.1 Khái niệm: 13

1.4.2 Khác biệt giữa công nghệ ảo hoá và ảo hoá phần mềm: 13

1.4.3 Cách thức hoạt động của công nghệ ảo hoả phần mềm: 13

1.4.4 Phân loại các ảo hoá phần mềm: 13

1.5 Application Virtualization (Ứng dụng ảo) 13

1.5.1 Khái niệm: 13

1.5.2 Cách hoạt động: 14

1.5.3 Lưu ý: 14

2 Giới thiệu về Docker 14

2.1 Khái niệm 14

2.2 Container 16

2.2.1 Khái niệm: 16

2.2.2 Container không phải là công nghệ ảo hoá: 16

2.2.3 Chạy phần mềm trong Container: 17

Trang 5

2.3 So sánh Docker và Virtual Machine 18

2.4 Lợi ích 21

2.5 Tác hại 23

2.6 Use case 24

2.7 Tập kiến trúc của Docker (Docker Engine) 24

2.7.1 Docker Daemon (Server): 25

2.7.2 Docker Client: 25

2.7.3 Docker Registry: 25

2.8 Các đối tượng khác (Docker Object) 26

2.8.1 Docker image 26

2.8.2 Docker container 26

2.8.3 Docker volume 26

2.8.4 Docker networking 27

2.8.5 Docker services 27

Chương 3 XÂY DỰNG HỆ THỐNG 28

5.1 Về ứng dụng website ghi chú 28

3.1 Xây dựng kiến trúc hệ thống 28

3.1.1 Xác định yêu cầu hệ thống 29

3.1.2 Phân tích yêu cầu hệ thống 29

3.2 Phân tích thiết kế hệ thống 30

3.2.1 Sơ đồ use case 30

3.2.1.1 Sơ đồ các use case 30

3.2.1.3 Mô tả chi tiết use case 30

3.2.2 Sơ đồ lớp 31

3.2.2.2 Mô tả chi tiết 32

3.3 Thiết kế giao diện 34

3.3.1.1 Giao diện trang chủ 34

3.3.1.2 Giao diện đăng nhập 35

3.3.1.3 Giao diện danh sách ghi chú (Khi chưa tạo ghi chú nào cả) 35

3.3.1.4 Giao diện soạn ghi chú 36

3.3.1.5 Giao diện danh sách ghi chú (sau khi có ít nhất một ghi chú) 37

3.3.1.6 Giao diện chỉnh sửa ghi chú 39

Chương 4 KẾT LUẬN 41

4.1 Kết quả đạt được 41

4.2 Hạn chế 41

Trang 6

4.3 Hướng phát triển 41

TÀI LIỆU THAM KHẢO 42

Trang 7

Chương 1 GIỚI THIỆU CHUNG

1 Lý do chọn đề tài

1.1 Về Docker

Trong thời đại hiện đại, với sự tiến bộ đáng kinh ngạc của công nghệ, ứng dụngđược tạo ra và cập nhật liên tục, dẫn đến sự hình thành của nhiều ngôn ngữ lập trình mới.Mỗi ngôn ngữ đó thường yêu cầu phần mềm hỗ trợ, các gói thư viện và môi trường riêngbiệt Trong số đó, một số ngôn ngữ như Java và Python có thể chạy trên hầu hết các nềntảng, trong khi những ngôn ngữ khác như C# hay Swift lại có tính khá kén chọn và phụthuộc vào môi trường và hệ điều hành Đối với các ứng dụng cần triển khai, việc cài đặtnhiều môi trường là một vấn đề khó khăn Ngoài ra, còn có các vấn đề như xung đột phầnmềm, trùng port và sự khác biệt giữa các phiên bản trong quá trình phát triển Nếu vấn đềchỉ dừng lại ở việc khó cài đặt, có thể chấp nhận được Tuy nhiên, nếu xảy ra xung độtphần mềm và gây ảnh hưởng đến hoạt động của các ứng dụng, điều đó là không thể chấpnhận được

Để giải quyết vấn đề này, các công nghệ ảo hóa đã xuất hiện và Docker là mộttrong số đó Docker, là một nền tảng dành cho lập trình viên và quản trị hệ thống, giúpchúng ta phát triển, triển khai và chạy các ứng dụng thông qua việc sử dụng cáccontainer Việc đóng gói ứng dụng vào các container giúp giảm thiểu rủi ro và xung độttrong quá trình phát triển và triển khai, đồng thời tạo ra môi trường vận hành ổn định nhấtcho các ứng dụng

2 Phạm vi nghiên cứu

Đồ án nghiên cứu tập trung vào việc ảo hoá của Docker, với công nghệ đóng gói cácthư viện và ứng dụng, cũng như việc quản lý, triển khai và bảo mật an ninh các container.Một phần của nghiên cứu này cũng áp dụng các kết quả và kiến thức thu được vào một ứngdụng thực tế nhằm tăng cường sự hiểu biết và áp dụng thực tiễn

3 Nội dung nghiên cứu

Em sẽ trước tiên tìm hiểu về công nghệ ảo hoá là gì, sau đó sẽ đi vào khái niệm củaDocker, container và các khái niệm liên quan Ưu, khuyết điểm của Docker, Tính năng,Use case của nó và vài điều lưu ý khi sử dụng Docker

Trang 8

4 Kết quả hướng tới

Mục tiêu chính của em với đề tài này, đó chính là mở rộng kiến thức của bản thân với lĩnh vực quản trị hệ thống về Docker Các kiến thức em nhắm tới thông qua quá trình tìm hiểu và áp dụng thực tế về đồ án này giúp em có thể phát triển thêm trong việc xây dựng một môi trường cô lập ứng dụng thông qua Docker và Docker Compose Với nhữngsinh viên khác sử dụng đồ án nghiên cứu này làm tài liệu tham khảo, em mong là các tài liệu và khái niệm em soạn thảo và sưu tầm được sẽ làm nền móng để cho các bạn đấy có thể tìm hiểu và nghiên cứu sâu hơn về sự tuyệt vời của Docker

Trang 9

Tuy nhiên, với công nghệ ảo hoá, chúng ta có thể nhét thêm các ứng dụng lỗi thờivào mail server, cho phép tài nguyên của server đấy được dùng một cách hiệu quả hơn.Thậm chí, phần còn lại người dùng có thể nhét thêm một tác vụ khác vào để được tận dụngtriệt để Việc này giúp giảm các khoản chi phát sinh từ việc sử dụng nhiều servers hoặc làcho mỗi server có thể làm được nhiều tác vụ khác nhau thay vì chỉ tập trung làm một tácvụ.

Ngày nay, công nghệ ảo hoá là một thực hành tiêu chuẩn trong tập kiến trúc doanhnghiệp IT, và nó cũng là một công nghệ thúc đẩy nền kinh tế đám mây Bằng việc cung

Hình 1.1 – Sử dụng 3 máy servers với mục đích khác nhau

Hình 1.2 – Tiết kiệm server thông qua công nghệ ảo hoá

Trang 10

cấp các đám mây phục vụ cho người dùng thông qua các phần cứng máy tính hiện tại của

họ, các công ty cung cấp dịch vụ có thể đưa ra các chi phí hiệu quả tỉ lệ với tài nguyên máytính dùng cho khối lượng công việc của người dùng, tạo ra một thị trường màu mỡ vàphong phú cho cả đôi bên

1.2 Lợi ích

Tiết kiệm chi phí

Như ví dụ trên, Sử dụng nhiều server phần cứng riêng lẻ cho các tác vụ khác nhau sẽdẫn đến việc lãng phí tài nguyên và không thể làm các tác vụ khác Thay vào đó, việc hợpnhất các ứng dụng vào môi trường ảo hoá tiết kiệm chi phí hơn cho công ty của bạn thôngqua việc tiết kiệm tiền đáng kể cho các máy chủ

Giảm thời gian chết và tăng khả năng phục hồi

Giả sử máy vật lí của 1 công ty gặp sự cố, công ty đó phải cử 1 ai đó để sửa hoặc làthay đổi chúng, việc này sẽ tốn đến hàng giờ thậm chí có thể đến hàng ngày liền Nhưngvới môi trường ảo, việc này trở nên dễ dàng hơn, bạn có thể tự sửa chữa bằng cách saochép hoặc clone về máy ảo gặp sự cố, sửa chúng, và đưa nó lên lại, chỉ trong vỏn vẹn vàiphút – giúp tăng khả năng phục hồi mạnh mẽ và cải thiện tính liên tục trong kinh doanh

Hiệu quả và năng suất cao:

Với việc sử dụng ít server hơn, đội ngũ IT của bạn sẽ dành ít thời gian hơn trong việcbảo trì phần cứng cũng như là cơ sở hạ tầng CNTT Việc cài đặt, cập nhật và duy trì môitrường xuyên suốt các máy ảo trên một server sẽ dễ dàng hơn so với việc phải trải qua quátrình đầy gian nan và khó khăn trong việc cập nhật server này sang server khác Ít thời gianduy trì môi trường đồng nghĩa với việc tăng hiệu quả và năng suất cho đội ngũ của bạn

Tự chủ kiểm soát và DevOps

Các dev có thể thiết lập máy ảo và làm việc với nó mà không ảnh hưởng đến quátrình phát triển phần mềm của họ

VD: Khi một bản cập nhật của phần mềm được ra mắt, phương pháp truyền thống là

phải đi kiếm một máy mới, tải một nùi thư viện và modules, thiết lập môi trường chỉ đểkiểm thử chức năng mới đó Tuy nhiên, công nghệ ảo hoá này sẽ gom hết tất cả các bướcđấy chỉ trong vỏn vẹn một bước, dev/tester chỉ cần clone về máy chủ ảo cho phần mềmđấy trên máy của họ, kiểm thử môi trường, và pull về quá trình phát triển phần mềm Việcnày giúp tăng tốc độ cũng như tính linh hoạt của phần mềm

Tối ưu chi phí và bảo vệ môi trường

Trang 11

Nếu mỗi công ty thiết lập ít server hơn thông qua công nghệ này, thì việc quản lítrung tâm dữ liệu sẽ được đơn giản hoá, chi phí tiết kiệm được có thể dùng cho các côngviệc khác, đồng thời lượng khí thải carbon từ các server này sẽ được giảm một lượng đángkể.

1.3 Hardware Virtualization (Ảo hoá phần cứng)

1.1 Khái niệm

Hardware virtualization là 1 phương pháp tạo phiên bản ảo của máy tính vật lí và hệđiều hành Nó sử dụng công cụ quản lý máy ảo (virtual machine manager - VMM) gọi làsiêu giám sát (hypervisor) để cung cấp các phần cứng trừu tượng cho nhiều hệ điều hànhkhác nhau, cho phép việc chia sẻ tài nguyên của phần cứng tối ưu hơn, đảm bảo về mặthiệu năng và chi phí

1.2 Khác biệt giữa công nghệ ảo hoá và ảo hoá phần cứng

- Công nghệ ảo hoá: Là khải niệm chung cho việc tạo ra một phiên bản ảo cho mộtthứ gì đó

- Ảo hoá phần cứng: Là sự cấu tạo phiên bản ảo cho tài nguyên máy tính vật lí

1.3 Các thành phần của ảo hoá phần cứng

Gồm 3 thành phần:

Lớp phần cứng, hay máy chủ ảo hoá, bao gồm các linh kiện máy chủ vật lí như CPU,

bộ nhớ, hệ thống mạng, và các ổ cứng Lớp này cần cpu lõi x86 với một hoặc nhiều CPU

để chạy tất cả các hệ điều hành khách có thể được hỗ trợ

Siêu giám sát tạo một lớp ảo hoá chạy giữa hệ điều hành và phần cứng của máy chủ,cho phép các instance của hệ điệu hành hoặc các hệ điều hành khác nhau có thể chạy songsong trên cùng một máy Siêu giám sát tách rời hệ điều hành và ứng dùng khỏi các phầncứng cơ bản của máy tính hoặc là máy chủ, từ các máy ảo sử dụng tài nguyên của nó.Máy ảo là các giả lập phần mềm của môi trường phần cứng, cung cấp các chức năngcần thiết chạy phần mềm đó trên một máy tính vật lí Một máy ảo sẽ bao gồm phần cứng

ảo, hệ điệu hành khách và phần mềm hoặc ứng dụng khách chạy trên nó

1.4 Cách thức hoạt động của công nghệ ảo hoá phần cứng

Đầu tiên, công nghệ này cho phép một máy tính vật lí hoạt động dưới dạng nhiềumáy khác nhau bằng việc tạo ra môi trường ảo Máy chủ ảo sử dụng phần mềm gọi là siêugiám sát để tạo ra một lớp ảo giữa phần mềm và phần cứng và quản lý các tài nguyên phầncứng được chia sẻ qua các hệ điều hành chủ và khách Siêu giám sát kết nối trực tiếp tớiphần cứng và cho phép nó được chia ra thành các môi trường hoặc máy ảo khác nhau Các

Trang 12

máy ảo này sử dụng tài nguyên của máy chủ, bao gồm CPU, bộ nhớ và không gian lưu trữ,được phân bố cho các khách khi cần Khi các quá trình này được thực hiện trên máy chủ,

ảo hoá phần cứng được gọi là ảo hoá máy chủ

Ảo hoá phần cứng làm cho nó có thể sử dụng tối đa hiệu năng và tài nguyên của máyvật lý, và thông qua việc cô lập các máy ảo, có thể bảo vệ dữ liệu khỏi các malware

1.5 Các loại ảo hoá phần cứng

Ảo hoá toàn phần:

Ảo hoá toàn phần mô phỏng kiến trúc của phần cứng để cô lập các hệ điều hànhkhách chưa được sửa đổi để chạy độc lập với phần cứng vật lý Điều này làm cho các máy

ảo có thể có thể di động một cách tuyệt đối giữa các máy chủ

Ảo hoá tương đối:

Ảo hoá tương đối sửa đổi mã nguồn của hệ điều hành để giao tiếp thông qua các APIđược cung cấp bởi siêu giám sát (được gọi là siêu cuộc gọi) Trong ảo hoá này, hệ điềuhành khách truyền thông trực tiếp với siêu giám sát, cải thiện năng suất và hiệu quả

Ảo hoá cấp hệ điều hành và cấp hệ thống:

Ảo hoá này sử dụng các giải pháp máy tính để bàn quản lý giúp giảm thiểu thời gianngưng trệ, giảm thiểu cuộc gọi trợ giúp và cung cấp sự truy cập cần thiết cho nguồn laođộng tạm thời

Ảo hoá hỗ trợ phần cứng:

Ảo hoá này cho phép chạy các hệ điều hành khách khác nhau độc lập trên một máytính chủ bằng cách tận dụng các thành phần vật lý của máy tính để tối ưu hoá việc ảo hoá

Trang 13

1.4 Software Virtualization (Ảo hoá phần mềm)

1.1 Khái niệm:

Ảo hoá phần mềm là một loại phần mềm giúp che giấu tài nguyên máy tính vật lí từend-user Nói nôm na, nó giống như công nghệ ảo hoá, chỉ khác là có thể phân tách cácbước cài đặt phần mềm và tạo ra cài đặt cho phần mềm ảo

1.2 Khác biệt giữa công nghệ ảo hoá và ảo hoá phần mềm:

- Công nghệ ảo hoá: Là khải niệm chung cho việc tạo ra một phiên bản ảo cho mộtthứ gì đó

- Ảo hoá phần mềm: Là sự cấu tạo nên phiên bản ảo cho cài đặt phần mềm

1.3 Cách thức hoạt động của công nghệ ảo hoả phần mềm:

Ảo hoá phần mềm hoạt động bằng cách tạo một môi trường ảo mô phỏng phần cứng

và hệ điều hành cơ bản Điều này cho phép các phần mềm ảo hoá được chạy như thể nóđược cài đặt trên máy tính vật lí, mặc dù nó đang chạy trên môi trường ảo Phần mềm ảohoả quản lý việc cấp pháp tài nguyên cho phần mềm ảo hoá và đảm bảo rằng nó có thểtương tác với phần cứng và hệ điều hành cơ bản

1.4 Phân loại các ảo hoá phần mềm:

Hệ điều hành ảo:

Ảo hoá phần mềm loại này là một mô hình hoạt động của hệ điều hành cho phép sựtồn tại của nhiều phiên bản không gian người dùng cô lập, được gọi là containers, zones,máy chủ riêng ảo, phân vùng, môi trường ảo, hạt nhân ảo hoặc jails Các chương trình chạybên trong container chỉ có thể thấy nội dung và các thiết bị được gán cho container, khácvới chương trình chạy trên một hệ điều hành thông thường

Ứng dụng ảo:

Ảo hoá phần mềm loại này cho phép ứng dụng có thể chạy trên các máy khách ảo vàtruy cập vào tài nguyên hệ thống mà không cần thiết phải cài đặt trên máy khách

Dịch vụ ảo:

Ảo hoá phần mềm loại này là một hình thức ảo hoá, nơi nhiều dịch vụ được cung cấp

từ cùng một máy chủ Điều này giúp tăng khả năng sử dụng tài nguyên phần cứng và giảmthiểu chi phí phát sinh

1.5 Application Virtualization (Ứng dụng ảo)

1.1 Khái niệm:

Trang 14

Ứng dụng ảo hóa là một công nghệ phần mềm giúp đóng gói các chương trình máytính khỏi hệ điều hành cơ sở mà chúng được thực thi Một ứng dụng được ảo hóa hoàntoàn không được cài đặt theo cách truyền thống, mặc dù nó vẫn được thực thi như thể nóđược cài đặt

1.2 Cách hoạt động:

Điều này đòi hỏi một lớp ảo hóa được chèn giữa ứng dụng và hệ điều hành Lớp này,hoặc khung, phải chạy các tập con của ứng dụng một cách ảo và không ảnh hưởng đến hệđiều hành cơ sở Các ứng dụng ảo được cài đặt trên các máy chủ được quản lý tập trung vàđược cung cấp cho người dùng dưới dạng dịch vụ theo thời gian thực và theo nhu cầu.Người dùng khởi chạy các ứng dụng ảo từ các điểm truy cập quen thuộc và tương tác vớichúng như thể chúng được cài đặt trên máy tính địa phương

1.3 Lưu ý:

Docker khác với ảo hóa ứng dụng trong nhiều cách Docker không sử dụng giả lậphoặc ảo hóa Nó chạy tất cả các mã trực tiếp trên CPU và hệ thống máy chủ, với không cóchi phí ảo hóa Docker không phải là một công nghệ ảo hóa trong nghĩa lịch sử của từ này

mà là một nền tảng cung cấp ứng dụng Docker cho phép các ứng dụng truyền thống đượccung cấp dưới dạng một tập hợp các microservices có thể tái sử dụng

Docker thuộc loại ảo hóa cấp hệ điều hành (OS-level virtualization) và sử dụng cáctính năng của Linux như chroot, namespaces và hệ thống tệp lớp để tạo ra các container

2 Giới thiệu về Docker

1.1 Khái niệm

Docker thuộc dạng ảo hoá hệ điều hành, là một nền tảng mở để phát triển, vậnchuyển và chạy các ứng dụng Docker cho phép việc áp dụng các quy tắc về đóng gói,phân phối và sử dụng phần mềm trở nên dễ dàng và hợp lý nhất có thể Với Docker, các cơ

sở hạ tầng đều có thể được xử lí tương tự như cách quản lý các ứng dụng của người dùng.Bằng cách tận dụng các phương pháp của Docker để vận chuyển, kiểm tra và triển khai mãmột cách nhanh chóng, người dùng có thể giảm đáng kể thời gian chờ đợi giữa khi viết mã

và chạy nó trên sản phẩm cuối cùng

(Giả sử một BA của phần mềm viết guide về sản phẩm của họ, như việc cài đặt thưviện và môi trường cần thiết trong mục “readme.txt” Nhưng nếu BA đấy dùng Docker để

mà phân phối sản phẩm đấy, họ chỉ cần tóm gọn hết tất cả các guide lại dưới dạng mộtcommand line và một phụ thuộc duy nhất)

Một số đặc điểm của Docker:

Độc lập và nhẹ nhàng:

Trang 15

Docker cho phép chạy nhiều container trên cùng một máy chủ vật lý mà không ảnhhưởng đến nhau Các container hoạt động độc lập, giúp tối ưu hóa sử dụng tài nguyên vàtiết kiệm không gian lưu trữ Container cũng nhanh chóng và linh hoạt khi khởi động vàtắt, giúp tăng hiệu suất và đáp ứng nhanh chóng cho các ứng dụng.

Linh hoạt và di động:

Docker cho phép đóng gói và chạy các ứng dụng trên bất kỳ môi trường nào cóDocker được cài đặt, bao gồm máy tính cá nhân, máy chủ vật lý, đám mây công cộng vàđám mây riêng Điều này giúp tạo ra sự linh hoạt và di động cho các ứng dụng, cho phéptriển khai và chuyển đổi giữa các môi trường một cách dễ dàng

Tích hợp và phát triển linh hoạt:

Docker tích hợp tốt với các công cụ và quy trình phát triển hiện có, như công cụ quản

lý mã nguồn, công cụ tự động hóa và công cụ liên kết Điều này giúp tạo ra một quy trìnhphát triển linh hoạt và tiết kiệm thời gian, cho phép đẩy nhanh quá trình phát triển và triểnkhai ứng dụng

Quản lý và đám mây:

Docker cung cấp các công cụ quản lý tiện ích cho việc triển khai và quản lý các ứngdụng trên đám mây Các dịch vụ như Docker Swarm và Kubernetes cho phép tự động hóaviệc triển khai, mở rộng và quản lý các ứng dụng trong môi trường đám mây, giúp tối ưuhóa hiệu suất và độ tin cậy

Hệ sinh thái phong phú:

Docker có một hệ sinh thái phong phú với hàng ngàn hình ảnh sẵn có trên DockerHub, nơi người dùng có thể tìm và tải các hình ảnh container sẵn có Ngoài ra, cộng đồngDocker rất lớn và nhiều công cụ và tài liệu hỗ trợ, giúp người dùng nhanh chóng tìm hiểu

và giải quyết các vấn đề liên quan đến Docker

Lưu ý: Docker không phải là một ngôn ngữ lập trình, cũng không phải là framework

để dựng phần mềm Docker là một công cụ giải quyết các vấn đề như cài đặt, gỡ bỏ, nângcấp, phân phối và chạy một phần mềm Ngoài ra, việc Docker là một công cụ mã nguồn

Trang 16

mở giúp mọi người đều có thể đóng góp vào nó và nó được hưởng lợi rất nhiều về nhữngmặt khác nhau.

1.2 Container

“Vào năm 1979, các hệ điều hành dạng UNIX sử dụng các môi trường thực thi để giới hạn phạm vi tài nguyên mà chương trình có thể truy cập, gọi là jail Tới năm 2005, với sự ra mắt của Sun’s Solaris 10 và Solaris Containers, container đã trở thành thuật ngữ được gọi nhiều hơn cho môi trường đấy, cùng với mục tiêu được mở rộng sang cả việc cô lập tất cả quá trình từ mọi nguồn khác trừ nơi nó được cho phép”

2.2.1 Khái niệm:

Docker cung cấp khả năng đóng gói và chạy ứng dụng trong một môi trường đượcgọi là container, được cô lập và bảo mật Sự cô lập và bảo mật này cho phép người dùngchạy nhiều container đồng thời trên một máy chủ cụ thể Container có kích thước nhẹ vàchứa đầy đủ mọi thứ cần thiết để chạy ứng dụng, do đó người dùng không cần phải phụthuộc vào những gì hiện đang được cài đặt trên máy chủ Người dùng có thể dễ dàng chia

sẻ các container trong quá trình làm việc và đảm bảo rằng tất cả mọi người người dùngchia sẻ đều nhận được cùng một container hoạt động theo cùng một cách

Docker cung cấp các công cụ và nền tảng để quản lý vòng đời của các container:

- Phát triển ứng dụng và các thành phần hỗ trợ của nó bằng cách sử dụng cáccontainer

- Container trở thành đơn vị để phân phối và kiểm tra ứng dụng của người dùng

- Khi người dùng đã sẵn sàng, triển khai ứng dụng của người dùng vào môi trườngsản xuất của người dùng dưới dạng một container hoặc dịch vụ được sắp xếp.Việc này hoạt động giống nhau cho dù môi trường sản xuất của người dùng làmột trung tâm dữ liệu cục bộ, một nhà cung cấp đám mây, hoặc sự kết hợp giữahai môi trường này

2.2.2 Container không phải là công nghệ ảo hoá:

Trong thời đại đám mây, việc triển khai máy ảo đã trở thành một phương pháp thôngthường, tuy nhiên chúng tốn nhiều thời gian và tài nguyên Docker đã xuất hiện như mộtcông cụ giúp tối ưu hóa quá trình này bằng cách sử dụng công nghệ container thay vì ảohóa phần cứng Trong Docker, các chương trình chạy trong container trực tiếp tương tácvới hạt nhân Linux của máy chủ, giúp tránh việc chạy các hệ điều hành dư thừa và tiếtkiệm thời gian khởi động Đây là một sự khác biệt quan trọng Docker có thể chạy trongmáy ảo nếu máy đó sử dụng hạt nhân Linux hiện đại Những công nghệ này không chỉ bổ

Trang 17

sung cho nhau mà còn đáp ứng nhu cầu triển khai linh hoạt trong môi trường đám mâyhiện đại.

 Docker không phải là công nghệ ảo hoá phần cứng Thay vào đó, nó giúp bạn sửdụng công nghệ container đã được tích hợp sẵn vào hệ điều hành kernel của bạn

2.2.3 Chạy phần mềm trong Container:

Trước khi tìm hiểu về mô hình hoá của Container, chúng ta hãy nhìn vào hình 1.1 để biếtđược phần mềm chạy trong một máy tính bình thường như thế nào Giao diện Commandline, hay được gọi là CLI, chạy trên bộ nhớ không gian người dùng (user space) Phầnmềm chạy trong bộ nhớ này không thể nào chỉnh sửa bộ nhớ không gian nhân (kernelspace memory) được, hay nói cách khác, phần mềm sẽ dùng toàn bộ tất cả tài nguyên củamáy tính để chạy hai phần mềm đó

Hình 2.1: Một ngăn xếp máy tính cơ bản khi chạy hai chương trình bắt đầu từ dòng lệnh

Trang 18

Đối với hình 1.2, chúng ta có thể thấy 3 chương trình Web server, Hello World vàDatabase chạy trong các containers mà nó chỉ chiếm 1 nửa dung lượng máy tính Điều nàyđược thực hiện bởi 2 chương trình của Docker, 1 là CLI, tiếp theo là Daemon (sẽ giải thích

2 thuật ngữ này ở phần sau)

Trong 3 container kia, các quá trình con của Docker Daemon được gói lại trong mộtcontainer, và quá trình đấy chỉ chạy trong một phần bộ nhớ của user space Các chươngtrình chạy trong đấy chỉ có thể truy cập vào bộ nhớ và tài nguyên được quy định bởi chínhcontainer đó

Hình 2.1: Docker chạy 3 containers trên một bộ máy Linux cơ bản

Trang 19

1.3 So sánh Docker và Virtual Machine

Ngày xưa, mô hình máy chủ thường là 1 máy chủ vật lý và 1 hệ điều hành

Hình 2.4: Mô hình máy chủ truyền thống

Khi ứng dụng phát triển lên, mô hình này nảy sinh ra nhiều vấn đề, ví dụ:

– Lãng phí tài nguyên: mặc dù cấu hình máy khỏe, ổ cứng dung lượng lớn, nhưng hệthống lại không tận dụng được hết lợi thế này

Hình 2.3: Docker chạy 3 containers trên một bộ máy Linux cơ bản

Trang 20

– Khó khăn trong việc mở rộng hệ thống: muốn mở rộng phải thuê thêm server, cấuhình, cân bằng tải (load balancing),…

Lúc này, công nghệ ảo hóa (vitualization) ra đời

Hình 2.5: Mô hình máy ảo VMs

Với công nghệ ảo hóa, trên cùng 1 máy chủ vật lý, có thể tạo ra nhiều hệ điều hành, tức là

sẽ chạy được nhiều ứng dụng Vậy là tài nguyên của máy được tận dụng tốt hơn Tuynhiên, việc ảo hóa này lại nảy sinh vấn đề mới:

– Ngốn tài nguyên: khi chạy 1 máy ảo, nó sẽ luôn chiếm 1 phần tài nguyên cố định.Vd: máy chủ có 512GB SSD, 16GB RAM Tạo ra 4 máy ảo Linux, mỗi máy cấp 64GBSSD và 2GB RAM Như vậy, sẽ mất 256 GB SSD để chứa 4 máy ảo, và khi chạy cùng 4máy ảo lên cùng lúc, chúng sẽ chiếm 8GB RAM Mặc dù chỉ chạy lên để không đó thôi,chưa dùng gì cả nhưng nó vẫn chiếm từng đó

– Tốn thời gian thực thi: thời gian khởi động, shutdown của các máy ảo sẽ lâu,thường là hàng phút

– Cồng kềnh: việc phải chịu tải cho cả 1 em máy ảo như vậy thì server không thếchạy hết hiệu suất được

Bước tiến hóa tiếp theo, công nghệ containerlization ra đời:

Trang 21

Hình 2.6: Mô hình ảo hóa Container

Với công nghệ này, trên một máy chủ, ta sẽ sinh ra được nhiều máy con (giống với ảohóa), nhưng điều đặc biệt là các máy con (Guess OS) này đều dùng chung phần nhân củamáy mẹ (host OS) và chia sẻ với nhau tài nguyên của máy mẹ (RAM chẳng hạn) Nhưvậy việc tận dụng tài nguyên sẽ được tối ưu hơn

1.4 Lợi ích

- Giúp tối ưu vòng đời phát triển ứng dụng bằng cách cho phép các nhà phát triểnlàm việc trong môi trường chuẩn bị bằng các container, cung cấp các ứng dụng vàdịch vụ

- Cho phép điều khiển công việc một cách linh hoạt, tăng hoặc giảm quy mô ứngdụng và dịch vụ theo yêu cầu kinh doanh một cách gần như thời gian thực

Ngày đăng: 04/09/2023, 20:41

HÌNH ẢNH LIÊN QUAN

Hình 1.2 – Tiết kiệm server thông qua công nghệ ảo hoá - Tìm hiểu docker và xây dựng ứng dụng minh họa
Hình 1.2 – Tiết kiệm server thông qua công nghệ ảo hoá (Trang 9)
Hình 1.1 – Sử dụng 3 máy servers với mục đích khác nhau - Tìm hiểu docker và xây dựng ứng dụng minh họa
Hình 1.1 – Sử dụng 3 máy servers với mục đích khác nhau (Trang 9)
Hình 2.1: Một ngăn xếp máy tính cơ bản khi chạy hai chương trình bắt đầu từ dòng lệnh - Tìm hiểu docker và xây dựng ứng dụng minh họa
Hình 2.1 Một ngăn xếp máy tính cơ bản khi chạy hai chương trình bắt đầu từ dòng lệnh (Trang 17)
Hình 2.1: Docker chạy 3 containers trên một bộ máy Linux cơ bản - Tìm hiểu docker và xây dựng ứng dụng minh họa
Hình 2.1 Docker chạy 3 containers trên một bộ máy Linux cơ bản (Trang 18)
Hình 2.5: Mô hình máy ảo VMs - Tìm hiểu docker và xây dựng ứng dụng minh họa
Hình 2.5 Mô hình máy ảo VMs (Trang 20)
Hình 2.6: Mô hình ảo hóa Container - Tìm hiểu docker và xây dựng ứng dụng minh họa
Hình 2.6 Mô hình ảo hóa Container (Trang 21)
Hình 1.3 cho chúng ta ví dụ về một chương trình chạy dựa trên các thư viện được cài - Tìm hiểu docker và xây dựng ứng dụng minh họa
Hình 1.3 cho chúng ta ví dụ về một chương trình chạy dựa trên các thư viện được cài (Trang 22)
Hình 2.9: Trái – Một chương trình chứa virus tiếp xúc với các tài nguyên trong máy tính - Tìm hiểu docker và xây dựng ứng dụng minh họa
Hình 2.9 Trái – Một chương trình chứa virus tiếp xúc với các tài nguyên trong máy tính (Trang 23)
Hình 2.10. Tập kiến trúc của Docker - Tìm hiểu docker và xây dựng ứng dụng minh họa
Hình 2.10. Tập kiến trúc của Docker (Trang 25)
3.2.1. Sơ đồ use case - Tìm hiểu docker và xây dựng ứng dụng minh họa
3.2.1. Sơ đồ use case (Trang 30)
3.2.1. Sơ đồ lớp - Tìm hiểu docker và xây dựng ứng dụng minh họa
3.2.1. Sơ đồ lớp (Trang 31)

TỪ KHÓA LIÊN QUAN

w