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

Bài báo cáo tiểu luận Đề tài tìm hiểu hệ Điều hành docker

29 1 0
Tài liệu đã được kiểm tra trùng lặp

Đ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 hệ điều hành Docker
Tác giả Đỗ Đức Cảnh, Đỗ Đức Thái, Vũ Thị Mỹ Lệ, Nguyễn Duy Thành, Lê Thành Đạt, Nguyễn Thành Đạt
Trường học Học viện Công nghệ Bưu chính Viễn thông
Chuyên ngành Hệ điều hành
Thể loại Bài báo cáo tiểu luận
Năm xuất bản 2024
Thành phố Hà Nội
Định dạng
Số trang 29
Dung lượng 8,27 MB

Nội dung

Chức năng, vai trò của Docker  Docker cho phép phát triển, di chuyển và chạy các ứng dụng dựa vàocông nghệ ảo hóa trong linux  Tự động triển khai các ứng dụng bên trong các container b

Trang 1

HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG

BỘ MÔN HỆ ĐIỀU HÀNH

BÀI BÁO CÁO TIỂU LUẬN

Đề tài: Tìm hiểu hệ điều hành Docker

Trang 2

PHÂN CÔNG NHIỆM VỤ NHÓM THỰC HIỆN

hoàn thành

1 Thuyết trình, nhóm trưởng, thư ký Đỗ Đức Cảnh

2 Tìm hiểu khái quát về Docker (khái

Mức hoàn thành CV

Kỹ năng giao tiếp

Kỹ năng hợp tác

Kỹ năng lãnh đạo

Trang 3

Mục lục

I Giới thiệu, kiến trúc và các thành phần của Docker 4

1 Docker là gì? 4

2 Chức năng, vai trò của Docker 4

3 Một số khái niệm khi sử dụng docker 5

3.1 Dockerfile 5

3.2 Docker image 5

3.3 Registry 6

3.4 Docker container 7

4 Kiến trúc, các thành phần trong Docker 9

4.1 Các thành phần 9

4.2 Kiến trúc Docker 9

II Cài đặt Docker Desktop trên Windows 10

III Các tính năng nổi bật của hệ điều hành Docker 16

1 Container hóa (Containerisation) 16

2 Quản lý tài nguyên hiệu quả 16

2.1 Chia sẻ hệ điều hành (Operating System Sharing) 16

2.2 Sử dụng ít tài nguyên hơn (Resource Efficiency) 17

2.3 Sử dụng công nghệ Control Groups và Namespaces 17

3 Tính di động của Docker 18

3.1 Đóng gói ứng dụng trong container 19

3.2 Khả năng tương thích đa nền tảng 19

4 Khả năng sao chép, tái sử dụng và triển khai nhanh 20

5 Networking đa dạng, linh hoạt 20

6 Tích hợp dễ dàng triển khai với hệ sinh thái Devops 22

IV Vấn đề An ninh và An toàn của Docker 22

1 Các công nghệ đảm bảo tính an ninh và an toàn của Docker 23 1.1 Công nghệ Namespaces 23

1.2 Công nghệ Control Groups 24

1.3 Linux Kernel Capabilities trong Docker: Một lớp bảo mật sâu hơn 24

1.4 Xác minh chữ kí số Docker Content Trust (DCT) 25

2 Những vấn đề cần lưu ý để đảm bảo an ninh an toàn trong Docker 27

2.1 Bề mặt tấn công của Docker Deamon 27

2.2 Sử dụng các tính năng bảo mật khác của Kernel 28

V Kết luận 28

VI Tài liệu tham khảo 29

Trang 4

I Giới thiệu, kiến trúc và các thành phần của Docker

1 Docker là gì?

Khi nói về docker, ta có thể đề cập đến một trong những điều sau:

 Công ty Docker, Inc

Docker được đặt tên xuất phát từ cách diễn đạt dock worker

Docker có 2 phiên bản chính:

 Docker Community Editon – CE: Là phiên bản miễn phí

 Docker Enterprise – EE: Phiên bản này là phiên bản trả phí, khi sửdụng phiên bản này sẽ có được sự hỗ trợ từ nhà phát hành

2 Chức năng, vai trò của Docker

 Docker cho phép phát triển, di chuyển và chạy các ứng dụng dựa vàocông nghệ ảo hóa trong linux

 Tự động triển khai các ứng dụng bên trong các container bằng cáchcung cấp thêm một lớp trừu tượng và tự động hóa việc ảo hóa mức(OS)

 Docker có thể được sử dụng trên các hệ điều hành như: Windows,Linux, MacOS

Một số lợi ích khi sử dụng docker như:

 Docker giúp cho việc vận chuyển phần mềm nhanh hơn trung bình 7lần so với người dùng không sử dụng docker

 Nhanh chóng triển khai, khởi động và di chuyển

Trang 5

 Bảo mật

 Hỗ trợ APIs để giao tiếp với các container

 Việc triển khai phần mềm, khắc phục sự cố dễ dàng hơn do đượcđóng vào container nhỏ

 Tiết kiệm tài nguyên và tiền bạc vì nó giúp chạy nhiều phần mềmhơn trên 1 máy chủ giúp tận dụng tối đa tài nguyên

3 Một số khái niệm khi sử dụng docker

 Image được tạo thành từ nhiều layer xếp chồng lên nhau, bên trongimage là 1 hệ điều hành bị cắt giảm và tất cả các phụ thuộc cần thiết

để chạy 1 ứng dụng

Trang 6

Hình 2: Tổng quan về Docker Image

Trang 7

3.4 Docker container

 Một image có thể đước sử dụng để tạo 1 hoặc nhiều container Ta cóthể create, start, stop, move hoặc delete dựa trên Docker API hoặcDocker CLI

Hình 4: Tổng quan về Docker container

 Trong mô hình container, hệ điều hành yêu cầu tất cả các tài nguyênphần cứng Trên hệ điều hành, ta cài đặt container engine là docker.Sau đó, công cụ container sẽ lấy các tài nguyên hệ điều hành và ghépchúng lại thành các cấu trúc riêng biệt được gọi là container

 Mỗi container bao gồm mọi thứ cần thiết để chạy được nó: code,runtime, system tools, system libraries, setting Mỗi container như 1

hệ điều hành thực sự, bên trong mỗi container sẽ chạy 1 ứng dụng

Hình 5: Mỗi container như 1 hệ điều hành

 Container và VM có sự cách ly và phân bổ tài nguyên tương tựnhưng có chức năng khác nhau vì container ảo hóa hệ điều hành thay

vì phần cứng Các container có tính portable (dễ vận chuyển) và hiệuquả hơn

Trang 8

Hình 6: Cấu trúc của Container

 Container nhằm làm cho các ứng dụng trở nên dễ dàng xây dựng, dichuyển và chạy Quá trình đưa 1 ứng dụng chạy trong container có đểđược hiểu như sau:

1 Đầu tiên ta bắt đầu với code app và các phụ thuộc của nó

2 Tạo Dockerfile mô tả ứng dụng, các phụ thuộc và cách chạy ứng dụng đó

3 Bulid Dockerfile thành image

4 Push image mới build vào registry(option)

5 Chạy container từ image

Hình 7: Quá trình chạy ứng dụng trong Container

Trang 9

4 Kiến trúc, các thành phần trong Docker

4.1 Các thành phần

Docker Engine là một ứng dụng client-server với các thành phần chính sau:

 Server hay còn được gọi là docker daemon chịu trách nhiệm tạo,quản lý các Docker object như: image, containers, networks, volume

 REST API được docker daemon sử dụng để cung cấp các api choclient sử dụng để thao tác với docker

 Client là thành phần đầu cuối cung cấp một tập hợp các câu lệnh sửdụng API để người dùng thao tác với Docker VD: docker

image, docker ps, docker network,

Hình 8: Tổng quan về Docker daemon

4.2 Kiến trúc Docker

Client sẽ sử dụng Docker REST API để tương tác với Docker daemon

Trang 10

Hình 9: Kiến trúc Docker

 Docker client sử dụng kiến trúc client-server Docker client sẽ giaotiếp với Docker daemon các công việc building, running vàdistributing các Docker container

 Docker daemon nghe các yêu cầu từ REST API và quản lý các đốitượng Docker như: Containers, Image, Networks và Volume Mộtdaemon cũng có thể liên lạc với các daemons khác để quản lý Dockerservices

 Docker registries để cho các docker image đăng ký lưu trữ quaDocker Hub để người sử dụng có thể kéo về 1 cách dễ dàng

II Cài đặt Docker Desktop trên Windows

Bước 1: Truy cập link: Docker Desktop: The #1 Containerization Tool forDevelopers | Docker

Hình 10: Giao diện trang web

Trang 11

Bước 2: Chọn phần mềm phù hợp với hệ điều hành sau đó tải về:

Hình 11: Chọn hệ điều hành thích hợp

Bước 3: Bấm đúp vào Docker Desktop Installer.exe để chạy trình cài đặt Theo mặc định, Docker Desktop được cài đặt tại C:\Program

Files\Docker\Docker.

Hình 12: Docker đã tải xong

Bước 4: Khi được nhắc, hãy đảm bảo tùy chọn Sử dụng WSL 2 thay vì

Hyper-V trên trang Cấu hình được chọn hay không tùy thuộc vào lựa chọn phụ trợ Nếu hệ thống chỉ hỗ trợ một trong hai tùy chọn, thì không thể chọn chươngtrình phụ trợ nào sẽ sử dụng

Trang 12

Hình 13: Tùy chọn cài đặt

-> Nhấn OK, quá trình cài đặt sẽ bắt đầu

Hình 14: Quá trình cài đặt bắt đầu

Bước 5: Sau khi cài đặt hoàn tất, nhấn accept để bắt đầu chạy Docker

Hình 15: Nhấn accept để bắt đầu chạy

Lưu ý: Sau khi cài đặt xong thì một máy ảo Linux sẽ được tạo vì Docker sửdụng các tính năng của Linux kernel để chạy các container

Trang 13

Hình 16: Máy ảo Linux được tạo

Cài đặt Docker Desktop trên Ubuntu

Bước 1: Cập nhật package của hệ thống: sudo apt update

Bước 2: Cài đặt một số gói cần thiết nhằm giúp apt có thể sử dụng package quaHTTPS:

Bước 3: Thêm mới GPG Key của Docker

 Thêm mới Docker Repository vào APT:

Trang 14

 Bước này sẽ cũng thêm mới các Repo vào package database của hệ thống.

 Kiểm tra xem việc thay thế repo mới nhất với repo mặc định của hệ thốngxem đã được thay thế chưa

 Trong output trên, lưu ý rằng docker-ce chưa được cài đặt, nhưng đã có sẵnphiên bản 5:19.03.9~3-0~ubuntu-focal trong repo sẵn sàng để cài đặt

 Cài đặt Docker

Trang 15

 Sau bước này, Docker sẽ được cài đặt, deamon sẽ được khởi động (DockerService chạy ngầm) và process sẽ được thêm vào boot (khởi động cùng hệthống) Để kiểm tra xem Docker Deamon đã được khởi động hay chưa,chúng ta sử dụng lệnh sau:

 Kiểm tra phiên bản của docker

Trang 16

III Các tính năng nổi bật của hệ điều hành Docker

1 Container hóa (Containerisation)

Container hóa (Containerisation) là một phương pháp phân tách ứng dụng vàmôi trường chạy của chúng trong các đơn vị cô lập gọi là container Mỗicontainer bao gồm tất cả những thứ cần thiết để chạy một ứng dụng cụ thể, baogồm các thư viện, phụ thuộc, cấu hình và mã nguồn Các container này có thểđược di chuyển giữa các môi trường máy chủ một cách dễ dàng, mà không cầnthay đổi mã nguồn hay cấu hình ứng dụng

Container hóa giúp tạo ra môi trường độc lập và nhất quán cho việc chạy ứngdụng trên các hệ thống khác nhau, bao gồm máy tính cá nhân, máy chủ vật lý,máy chủ ảo hoặc các dịch vụ đám mây Việc sử dụng container hóa giúp tăngtính linh hoạt, khả năng di động và khả năng mở rộng của ứng dụng

Hình 17: Container hóa

2 Quản lý tài nguyên hiệu quả

Quản lý tài nguyên hiệu quả trong Docker đề cập đến khả năng kiểm soát vàphân bổ chính xác các tài nguyên hệ thống cho từng container Đây là mộttrong những ưu điểm quan trọng của Docker so với các phương pháp ảo hóakhác Vậy cơ chế nào giúp Docker quản lý tài nguyên hiệu quả hơn so với cáccông nghệ khác

2.1 Chia sẻ hệ điều hành (Operating System Sharing)

Thay vì phải khởi chạy một hệ điều hành đầy đủ như máy ảo (VM), Dockercontainer chỉ cần chạy những phần ứng dụng và các thư viện, phụ thuộc cầnthiết, trong khi chia sẻ cùng một kernel (hạt nhân hệ điều hành) với máy chủ(host)

Trang 17

Hình 18: Docker chia sẻ OS

Điều này giúp loại bỏ việc lặp lại tài nguyên giữa các hệ thống, như bộ nhớ vàCPU cần thiết cho việc chạy nhiều hệ điều hành giống nhau trong máy ảo

2.2 Sử dụng ít tài nguyên hơn (Resource Efficiency)

Vì Docker container không yêu cầu toàn bộ hệ điều hành riêng biệt, nó tiêu tốn

ít bộ nhớ (RAM) và CPU hơn Điều này cho phép một máy vật lý có thể chạyđược nhiều container hơn so với các máy ảo, tăng hiệu quả sử dụng tài nguyên

2.3 Sử dụng công nghệ Control Groups và Namespaces

( “ 2 công nghệ này sẽ được giải thích kĩ hơn ở phần “Vấn đề an ninh và Antoàn của Docker”)

Cgroups và Namespaces là hai công nghệ nền tảng giúp Docker tạo ra các môitrường container nhẹ, linh hoạt và an toàn Chúng cung cấp cơ chế để cách ly

và quản lý tài nguyên cho các tiến trình, tạo ra các môi trường độc lập cho mỗicontainer

Công nghệ Cgroups: Công nghệ để quản lý tài nguyên hiệu quả bằng các cơchế Cgroups là cơ chế giúp quản lý và kiểm soát việc sử dụng tài nguyên củacác tiến trình trong hệ thống, cụ thể là các container trong Docker

Công nghệ Namespaces: Tạo môi trường cách ly bằng các cơ chế Namespaces

là công nghệ tạo ra các không gian (namespace) riêng biệt cho các tài nguyêntrong hệ thống, giúp cách ly hoàn toàn các container với nhau và với hệ thốngchủ

Trang 18

Hình 19: Công nghệ Cgroups và Namespaces

Tóm lại , Cgroups giúp quản lý và kiểm soát tài nguyên, đảm bảo rằng cáccontainer sử dụng tài nguyên một cách hợp lý và không gây ảnh hưởng đến cáccontainer khác Namespaces giúp cách ly và tạo môi trường độc lập cho cáccontainer, tăng cường bảo mật và ngăn chặn xung đột giữa các container Nhờ

sự kết hợp giữa Cgroups và Namespaces, Docker có thể xây dựng các containernhẹ, linh hoạt và bảo mật, giúp các ứng dụng chạy ổn định và hiệu quả trongmọi môi trường

Trang 19

Hình 20: Tính di động

3.1 Đóng gói ứng dụng trong container

Docker container hóa ứng dụng và tất cả các phụ thuộc của nó (như thư viện,môi trường runtime, công cụ hệ thống, cài đặt cấu hình) vào một image duynhất Container này sau đó có thể chạy nhất quán trên bất kỳ môi trường nào cóDocker Engine Điều này giúp loại bỏ vấn đề phụ thuộc vào hạ tầng môi trường

vì môi trường chạy đã được chuẩn hóa trong container

3.2 Khả năng tương thích đa nền tảng

Docker container hoạt động như một môi trường chạy cô lập Điều này cónghĩa là dù hệ điều hành của hệ thống chủ (host) có sự khác biệt, ứng dụng bêntrong container vẫn sẽ hoạt động như mong đợi, vì nó đã được đóng gói cùngvới mọi thứ cần thiết để chạy Từ đó, các vấn đề xung đột phiên bản phần mềmhay thư viện trên máy chủ sẽ không ảnh hưởng đến container Do đó ,Docker

có thể được chạy trên nhiều nền tảng khác nhau mà không cần thay đổi cấuhình Các môi trường này bao gồm:

- Máy tính cá nhân của nhà phát triển (local development machine): Các nhàphát triển có thể làm việc trên máy của họ và xây dựng các container với môitrường giống như môi trường sản xuất

- Máy chủ vật lý: Các container có thể được triển khai trên các máy chủ vật lýon-premise mà không cần cài đặt thêm các gói phần mềm đặc thù

Trang 20

- Máy ảo: Docker container có thể chạy trên các máy ảo mà không cần quantâm đến hệ điều hành bên dưới máy ảo.

- Cloud: Docker hỗ trợ nhiều nhà cung cấp dịch vụ đám mây như AWS,Google Cloud, Azure, v.v Điều này giúp việc triển khai ứng dụng trên các nềntảng này rất linh hoạt

4 Khả năng sao chép, tái sử dụng và triển khai nhanh

Do Docker container được đóng gói dưới dạng image, việc sao chép và triểnkhai các container mới trở nên rất nhanh chóng Các container mới có thể đượctạo ra từ image gốc mà không cần cài đặt lại từng thành phần phụ thuộc Điềunày giúp quá trình mở rộng hệ thống và di chuyển ứng dụng từ máy này sangmáy khác diễn ra dễ dàng và nhanh chóng

Hình 21: Tính sao chép, tái sử dụng và triển khai nhanh

Ngoài ra , Docker cung cấp Docker Hub, một kho lưu trữ container image trựctuyến cho phép các nhà phát triển đẩy và kéo các image giữa các môi trườngmột cách dễ dàng Điều này giúp các nhóm phát triển và vận hành không phảitốn thời gian cấu hình lại môi trường mỗi khi cần triển khai ứng dụng lên một

hệ thống mới Image đã được xây dựng chỉ cần được tải lên Docker Hub, và cóthể kéo về để chạy ở bất kỳ đâu có Docker Engine

5 Networking đa dạng, linh hoạt

Networking linh hoạt là một trong những tính năng quan trọng của Docker, chophép quản lý và cấu hình mạng giữa các container, giữa container và hệ thốngchủ, và giữa container với môi trường bên ngoài một cách dễ dàng và linh hoạt.Docker cung cấp nhiều loại mạng khác nhau để phù hợp với nhu cầu của ứngdụng:

Trang 21

- Bridge Network: Đây là loại mạng mặc định cho các container Khibạn tạo một container mà không chỉ định loại mạng, Docker sẽ gán cho

nó một địa chỉ IP trong bridge network, cho phép các container giao tiếpvới nhau qua địa chỉ IP riêng

- Host Network: Container sẽ sử dụng mạng của hệ thống chủ, tức làkhông có cách ly mạng giữa container và máy chủ Điều này giúp tăngtốc độ mạng nhưng có thể gây rắc rối với các container khác

- Overlay Network: Cho phép các container chạy trên nhiều máy chủ(host) khác nhau có thể giao tiếp với nhau Điều này rất hữu ích trongcác môi trường cluster, như khi sử dụng Docker Swarm hoặc

Kubernetes

- Macvlan Network: Cung cấp một địa chỉ MAC cho mỗi container, chophép chúng xuất hiện như các thiết bị mạng riêng biệt trong mạng vật lý

Hình 22: Networking đa dạng, linh hoạt

Docker cho phép các container giao tiếp với nhau thông qua các địa chỉ IPriêng hoặc tên dịch vụ (service names) nếu bạn sử dụng Docker Composehoặc Docker Swarm Điều này giúp đơn giản hóa việc phát triển ứng dụngtheo kiến trúc microservices Docker cung cấp các lệnh và công cụ dễ dàng

để tạo, xóa và cấu hình mạng Bạn có thể dễ dàng thêm, xóa hoặc thay đổicấu hình mạng cho các container mà không cần khởi động lại hệ thống hoặccontainer

Ngoài ra, Docker hỗ trợ tạo các mạng riêng tư, giúp bảo vệ dữ liệu vàthông tin liên lạc giữa các container Bạn có thể kiểm soát quyền truy cậpvào các mạng và bảo đảm rằng chỉ những container được phép mới có thểgiao tiếp với nhau

Ngày đăng: 15/02/2025, 22:09

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN