



















Preview text:
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN &
TRUYỀN THÔNG VIỆT-HÀN
KHOA KHOA HỌC MÁY TÍNH ĐỒ ÁN MÔN HỌC
LINUX & PHẦN MỀM MÃ NGUỒN MỞ
TÌM HIỂU, TRIỂN KHAI VÀ CẤU HÌNH
NỀN TẢNG DOCKER CONTAINER TRÊN
HỆ ĐIỀU HÀNH UBUNTU
Sinh viên thực hiện:
Nguyễn Văn Rin - 23IT231
Nguyễn Anh Tuấn - 23IT297
Nguyễn Quốc Viễn - 23IT306
Huỳnh Tuấn Tú - 23IT293 Lớp:
Linux và phần mềm mã nguồn mở (5)
Giảng viên hướng dẫn: ThS. Ninh Khánh Chi
Đà Nẵng, tháng 11 năm 2025
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN &
TRUYỀN THÔNG VIỆT-HÀN
KHOA KHOA HỌC MÁY TÍNH ĐỒ ÁN MÔN HỌC
LINUX & PHẦN MỀM MÃ NGUỒN MỞ
TÌM HIỂU, TRIỂN KHAI VÀ CẤU HÌNH
NỀN TẢNG DOCKER CONTAINER TRÊN
HỆ ĐIỀU HÀNH UBUNTU
Sinh viên thực hiện:
Nguyễn Văn Rin - 23IT231
Nguyễn Anh Tuấn - 23IT297
Nguyễn Quốc Viễn - 23IT306
Huỳnh Tuấn Tú - 23IT293 Lớp:
Linux và phần mềm mã nguồn mở (5)
Giảng viên hướng dẫn: ThS. Ninh Khánh Chi
Đà Nẵng, tháng 11 năm 2025
NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
……………………………………………………………………………………… i LỜI CẢM ƠN
Để đạt được kết quả tốt trong dự án này, chúng em đã nhận được sự hỗ trợ và
giúp đỡ từ giảng viên phụ trách môn Linux và Phần mềm mã nguồn mở. Với lòng biết
ơn sâu sắc và chân thành, chúng em xin gửi lời cảm ơn sâu sắc nhất đến toàn thể Quý
Thầy Cô đã tạo điều kiện thuận lợi và hỗ trợ chúng em trong suốt quá trình học tập,
nghiên cứu và thực hiện đề tài này.
Trước hết, chúng em xin gửi lời chào trân trọng, lời chúc sức khỏe và lòng biết
ơn sâu sắc đến các thầy cô của Trường Đại học Công nghệ Thông tin và Truyền thông
Việt – Hàn. Nhờ sự quan tâm, giảng dạy tận tình và hướng dẫn chu đáo của quý thầy cô,
những người đã trang bị cho chúng em các kỹ năng cần thiết, chúng em đã có thể hoàn
thành đồ án môn học này.
Đặc biệt, chúng em xin bày tỏ lòng biết ơn chân thành nhất đến giảng viên hướng
dẫn, cô ThS. Ninh Khánh Chi, vì sự quan tâm tận tình và những hỗ trợ kiến thức chuyên
môn của cô đã giúp chúng em hoàn thành tốt dự án trong thời gian vừa qua.
Do thời gian hạn chế và kinh nghiệm còn hạn chế, bài làm của chúng em khó
tránh khỏi những thiếu sót. Chúng em rất mong nhận được sự góp ý và hướng dẫn của
quý thầy cô để chúng em có cơ hội bổ sung, nâng cao kiến thức, phục vụ tốt hơn cho
công việc thực tế sau này. Sinh viên, Nhom 4 ii MỤC LỤC
LỜI CẢM ƠN ................................................................................................................. ii
MỤC LỤC ..................................................................................................................... iii
DANH MỤC HÌNH VẼ .................................................................................................vi
DANH MỤC BẢNG ................................................................................................... viii
DANH MỤC VIẾT TẮT ................................................................................................ix
LỜI MỞ ĐẦU ................................................................................................................. 1
CHƯƠNG I: TỔNG QUAN ĐỀ TÀI .............................................................................. 2
1.1. Giới thiệu .............................................................................................................. 2
1.2. Mục tiêu, nhiệm vụ của đề tài .............................................................................. 2
1.2.1. Mục tiêu tổng quát .......................................................................................... 2
1.2.2. Mục tiêu cụ thể ............................................................................................... 2
1.2.3. Nhiệm vụ của đề tài ........................................................................................ 3
1.3. Đối tượng, phạm vi nghiên cứu............................................................................ 3
1.3.1. Đối tượng nghiên cứu ..................................................................................... 3
1.3.2. Phạm vi nghiên cứu ........................................................................................ 4
1.4. Ý nghĩa của đề tài ................................................................................................. 4
1.4.1. Ý nghĩa khoa học ............................................................................................ 4
1.4.2. Ý nghĩa thực tiễn ............................................................................................. 4
1.5. Bố cục của đề tài .................................................................................................. 4
CHƯƠNG II. CƠ SỞ LÝ THUYẾT ............................................................................... 5
2.1. Giới thiệu môn học Linux và Phần mềm mã nguồn mở ...................................... 5
2.2. Phần mềm mã nguồn mở ...................................................................................... 5
2.2.1. Phần mềm nguồn mở là gì? ............................................................................ 5
2.2.2. Lịch sử của phần mềm mã nguồn mở ............................................................. 5
2.2.3. Ưu và nhược điểm của phần mềm mã nguồn mở ........................................... 6
2.3. Tổng quan về hệ điều hành Linux ........................................................................ 7
2.3.1. Linux là gì? ..................................................................................................... 7
2.3.2. Cấu trúc của hệ điều hành Linux .................................................................... 7
2.4. Ubuntu là gì ? ....................................................................................................... 8
2.4.1. Giới thiệu hệ điều hành Ubuntu ...................................................................... 8 iii
2.4.2. So sánh hệ điều hành Ubuntu và Windows .................................................... 9
2.5. Bash và Bash Script ........................................................................................... 10
2.5.1 Bash ............................................................................................................... 10
2.5.2. Bash Script .................................................................................................... 10
2.6. Giao thức SSH .................................................................................................... 11
2.7. Mô hình Client–Server ....................................................................................... 12
2.7.1. Định nghĩa..................................................................................................... 12
2.7.2. Ưu điểm và nhược điểm ............................................................................... 12
2.8. Giới thiệu Docker và containerization ............................................................... 13
2.9. Dockerfile là gì? ................................................................................................. 15
2.10. Docker Image là gì? ......................................................................................... 16
2.11. Docker Networking .......................................................................................... 17
2.12. Docker Volume ................................................................................................ 18
2.13. Docker Compose .............................................................................................. 19
2.14. Intellij IDEA ..................................................................................................... 19
2.15. Spring Boot ...................................................................................................... 21
2.16. PostGreSQL ..................................................................................................... 21
2.17. Vite ................................................................................................................... 22
2.18. Máy ảo VirtualBox ........................................................................................... 23
CHƯƠNG III. TRIỂN KHAI VÀ CẤU HÌNH HỆ THỐNG ....................................... 24
3.1. Chuẩn bị môi trường triển khai .......................................................................... 24
3.1.1. Thông số phần cứng và phần mềm ............................................................... 24
3.1.2. Cài đặt hệ điều hành và cấu hình mạng cho server ...................................... 26
3.1.3. Cài đặt các công cụ nền tảng trên server ...................................................... 27
3.1.3.1. Cài đặt SSH server ................................................................................. 27
3.1.3.2. Cài đặt Docker và Docker Compose ...................................................... 28
3.1.3.3. Cài đặt các công cụ hỗ trợ khác ............................................................. 32
3.1.4. Chuẩn bị công cụ trên máy client quản trị (Windows) ................................. 33
3.1.5. Tổ chức thư mục dự án trên server ............................................................... 34
3.2.1. Tổng quan hệ thống Project Task Board ...................................................... 35
3.2.2. Ba vai trò máy trong hệ thống ...................................................................... 35
3.2.3. Mô hình mạng: LAN nội bộ ......................................................................... 37 iv
3.3. Cài đặt và cấu hình thủ công các dịch vụ trên Ubuntu ...................................... 37
3.4. Phân tích các file cấu hình quan trọng ............................................................... 38
3.4.1. Cấu hình SSH: /etc/ssh/sshd_config ............................................................. 38
3.4.2. File docker-compose.yml ............................................................................. 38
3.4.3. File client/nginx.conf .................................................................................... 41
3.4.4. Dockerfile backend và frontend.................................................................... 44
3.4.4.1. Backend (server/Dockerfile): ................................................................. 44
3.4.4.2. Frontend (client/Dockerfile): .................................................................. 45
3.4.4.3. Nhận xét chung ....................................................................................... 46
3.4.5. File cấu hình ứng dụng và CORS ................................................................. 46
3.4.5.1. application.yml: Cấu hình datasource Spring Boot. ............................... 46
3.4.5.2. CORS (CorsConfig.java): ...................................................................... 47
3.5. Chỉnh sửa các tham số quan trọng để dịch vụ hoạt động theo yêu cầu ............. 47
3.5.1. Tham số SSH ................................................................................................ 47
3.5.2. Tham số Docker Compose (ports, networks, volumes)................................ 48
3.5.3. Tham số Nginx và proxy /api ....................................................................... 48
3.5.4. Tham số CORS và môi trường frontend ....................................................... 49
3.6. Script Bash cấu hình và triển khai tự động deploy.sh ........................................ 50
3.7. Kết quả ............................................................................................................... 56
3.7.1. Deploy.sh ................................................................................................... 56
3.7.2. Giao diện Website ......................................................................................... 58
3.8. Kiểm tra và đánh giá hoạt động dịch vụ ............................................................ 59
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN .................................................................... 60
1. Kết quả đạt được ................................................................................................... 60
2. Hướng phát triển ................................................................................................... 60
TÀI LIỆU THAM KHẢO ............................................................................................. 61 v DANH MỤC HÌNH VẼ
Hình 1 - Open Source ..................................................................................................... 7
Hình 2 - Linux phần mền mã nguồn mở ........................................................................ 8
Hình 3 – Ubuntu ............................................................................................................. 9
Hình 4 - Bash ................................................................................................................ 11
Hình 5 – Giao thức SSH ............................................................................................... 12
Hình 6 - Mô hình Client Server .................................................................................... 13
Hình 7 - Cấu trúc Docker ............................................................................................. 14
Hình 8 - Docker Container ........................................................................................... 15
Hình 9 - Docker Image ................................................................................................ 17
Hình 10 - Docker Network ........................................................................................... 18
Hình 11 - Docker Volumes ........................................................................................... 18
Hình 12 - Docker Compose .......................................................................................... 19
Hình 13 - IntelliJ ........................................................................................................... 21
Hình 14 - Spring Boot .................................................................................................. 21
Hình 15 - PostgreSQL .................................................................................................. 22
Hình 16 - Vite ............................................................................................................... 23
Hình 17 – VirtualBox ................................................................................................... 23
Hình 18 - Tổ chức hệ thống .......................................................................................... 25
Hình 19 - Cập nhập hệ thống ........................................................................................ 26
Hình 20 - Kiểm tra địa chi IP trong LAN ..................................................................... 26
Hình 21 - Cài đặt SSH server trên Ubuntu server ........................................................ 27
Hình 22 - Kiểm tra trạng thái dịch vụ........................................................................... 28
Hình 23 - Gỡ các gói Docker cũ ................................................................................... 29
Hình 24 - Tạo thư mục chứa key và tải GPG key của Docker ..................................... 29
Hình 25 - Thêm file cấu hình kho Docker vào máy server .......................................... 30
Hình 26 - Cài Docker Engine và Docker Compose plugin .......................................... 30
Hình 27 - Kiểm tra dịch vụ Docker đã chạy chưa ........................................................ 31
Hình 28 - Test hello-world ........................................................................................... 31
Hình 29 - Cài git ........................................................................................................... 32 vi
Hình 30 - Cài Java & Maven ........................................................................................ 32
Hình 31 - Cài Node & Npm ......................................................................................... 32
Hình 32 - SSH từ client vào Ubuntu Server ................................................................. 33
Hình 33 - Cấu trúc mã nguồn dự án ............................................................................. 34
Hình 34 - File docker-compose.yml ............................................................................. 39
Hình 35 - Kết quả sau khi deploy ................................................................................. 41
Hình 36 - File client/nginx.conf .................................................................................. 42
Hình 37 - Dockerfile backend ...................................................................................... 44
Hình 38 - Dockerfile frontend ...................................................................................... 45
Hình 39 - File cấu hình ứng dụng Backend .................................................................. 46
Hình 40 - File cấu hình CORS ..................................................................................... 47
Hình 41 - Frontend .env ................................................................................................ 49
Hình 42 - Script Bash cấu hình và triển khai tự động deploy.sh .................................. 50
Hình 43 - Script Bash cấu hình và triển khai tự động deploy.sh .................................. 51
Hình 44 - Script Bash cấu hình và triển khai tự động deploy.sh .................................. 52
Hình 45 - Script Bash cấu hình và triển khai tự động deploy.sh .................................. 53
Hình 46 - Script Bash cấu hình và triển khai tự động deploy.sh .................................. 54
Hình 47 - Khởi chạy Deploy.sh .................................................................................... 56
Hình 48 - Chạy ./deploy.sh deploy ............................................................................... 56
Hình 49 - Kết quả khi deploy bằng deploy.sh .............................................................. 57
Hình 50 - Chạy ./deploy.sh logs .................................................................................. 57
Hình 51 - Chạy ./deploy.sh clean ................................................................................. 57
Hình 52 - Giao diện Website ........................................................................................ 58
Hình 53 - Giao diện Website ........................................................................................ 58 vii DANH MỤC BẢNG
Bảng 1- Bảng danh mục viết tắt ...................................................................................... x
Bảng 2 - Bảng so sánh hệ điều hành Ubuntu và Windows ........................................... 10
Bảng 3- Bảng kiểm tra và đánh giá hoạt đông dịch vụ ................................................. 59
Bảng 4- Bảng đánh giá tiến độ ...................................................................................... 63 viii
DANH MỤC VIẾT TẮT VIẾT TẮT NỘI DUNG VM Virtual Machine – Máy ảo SSH
Secure Shell – Giao thức truy cập và quản trị từ xa CLI
Command Line Interface – Giao diện dòng lệnh GUI
Graphical User Interface – Giao diện đồ họa CSV
Comma-Separated Values – Định dạng dữ liệu dạng bảng APT
Advanced Package Tool – Hệ thống quản lý gói trên Ubuntu DB
Database – Cơ sở dữ liệu API
Application Programming Interface – Giao diện lập trình ứng dụng CSDL Cơ sở dữ liệu REST API
Representational State Transfer API – API dạng REST LAN
Local Area Network – Mạng cục bộ
Continuous Integration / Continuous Deployment – Tích hợp & triển CI/CD khai liên tục OS
Operating System – Hệ điều hành IDE
Integrated Development Environment – Môi trường phát triển tích hợp JDK
Java Development Kit – Bộ phát triển Java ix JRE
Java Runtime Environment – Môi trường chạy Java npm
Node Package Manager – Trình quản lý gói Node.js GPG
GNU Privacy Guard – Công cụ mã hóa/ký số IP
Internet Protocol – Địa chỉ mạng
HTTP/HTTPS HyperText Transfer Protocol / Secure – Giao thức web YAML
YAML Ain’t Markup Language – Định dạng tệp YAML UFW
Uncomplicated Firewall – Tường lửa của Ubuntu SPA
Single Page Application – Ứng dụng một trang
Bảng 1- Bảng danh mục viết tắt x
TÌM HIỂU, TRIỂN KHAI VÀ CẤU HÌNH NỀN TẢNG DOCKER CONTAINER TRÊN
HỆ ĐIỀU HÀNH UBUNTU LỜI MỞ ĐẦU
Trong bối cảnh công nghệ thông tin phát triển mạnh mẽ, nhu cầu triển khai các
ứng dụng một cách linh hoạt, ổn định và dễ dàng mở rộng ngày càng trở nên quan trọng.
Các doanh nghiệp và nhà phát triển đang dần chuyển dịch từ mô hình triển khai truyền
thống sang các phương pháp hiện đại hơn, trong đó công nghệ container – đặc biệt là
Docker – đã trở thành một trong những xu hướng chủ đạo. Docker cho phép đóng gói
ứng dụng cùng toàn bộ môi trường chạy vào các container nhẹ, độc lập và có khả năng
hoạt động nhất quán trên nhiều hệ thống khác nhau.
Xuất phát từ tầm quan trọng đó, đề tài “Tìm hiểu, triển khai và cấu hình nền tảng
Docker Container trên hệ điều hành Ubuntu” được thực hiện nhằm giúp người học nắm
vững bản chất, kiến trúc và khả năng ứng dụng của Docker trong thực tiễn. Bên cạnh
việc nghiên cứu lý thuyết, đề tài còn tập trung triển khai thực nghiệm trên Ubuntu Server,
xây dựng Dockerfile để đóng gói ứng dụng, sử dụng Docker Compose để vận hành hệ
thống nhiều container, cũng như tự động hóa quy trình triển khai thông qua Bash script.
Đề tài hướng đến mục tiêu giúp người học hiểu rõ cách thức hoạt động của
Docker, xây dựng môi trường triển khai hiện đại và nâng cao kỹ năng triển khai ứng
dụng theo hướng DevOps. Nội dung báo cáo được trình bày theo từng phần rõ ràng, từ
tổng quan công nghệ, phân tích các thành phần cốt lõi cho đến triển khai thực tế và đánh giá kết quả.
Hy vọng rằng bài báo cáo này sẽ mang đến cái nhìn hệ thống và hữu ích về công
nghệ Docker, đồng thời làm tài liệu tham khảo cho những ai quan tâm đến lĩnh vực triển
khai ứng dụng hiện đại.
Khoa Khoa Học Máy Tính 1
Nhóm 4 – Linux & PMMNM
TÌM HIỂU, TRIỂN KHAI VÀ CẤU HÌNH NỀN TẢNG DOCKER CONTAINER TRÊN
HỆ ĐIỀU HÀNH UBUNTU
CHƯƠNG I: TỔNG QUAN ĐỀ TÀI 1.1. Giới thiệu
Trong bối cảnh công nghệ thông tin phát triển mạnh mẽ, các ứng dụng hiện đại
đòi hỏi khả năng triển khai nhanh, dễ mở rộng và đảm bảo tính ổn định cao. Các phương
pháp triển khai truyền thống dựa trên máy ảo (Virtual Machine) tuy phổ biến nhưng lại
tiêu tốn nhiều tài nguyên và thiếu tính linh hoạt khi chuyển giao hoặc mở rộng hệ thống.
Điều này dẫn đến nhu cầu về một giải pháp triển khai ứng dụng nhẹ hơn, hiệu quả hơn và dễ quản lý hơn.
Docker – một nền tảng container hóa – đã trở thành công cụ quan trọng trong quá
trình phát triển và vận hành phần mềm (DevOps). Docker cho phép đóng gói ứng dụng
cùng môi trường chạy của nó vào các container nhỏ gọn, độc lập và dễ dàng triển khai
trên nhiều môi trường khác nhau. Nhờ đó, Docker giúp giảm thiểu xung đột môi trường,
tăng tốc độ triển khai và tối ưu hóa việc sử dụng tài nguyên hệ thống.
Ubuntu, một trong những hệ điều hành Linux phổ biến nhất hiện nay, được lựa
chọn làm môi trường triển khai Docker bởi tính ổn định, mã nguồn mở, dễ sử dụng và
khả năng tương thích cao với các công cụ DevOps. Việc tìm hiểu, triển khai và cấu hình
Docker trên Ubuntu giúp sinh viên và kỹ sư hệ thống nắm vững cách thức hoạt động
của container, đồng thời tạo nền tảng cho các kiến trúc hiện đại như microservices và CI/CD.
Vì vậy, đề tài “Tìm hiểu, triển khai và cấu hình nền tảng Docker Container
trên hệ điều hành Ubuntu” được thực hiện nhằm giúp người học hiểu rõ khái niệm
container, các thành phần trong Docker, quy trình cài đặt – triển khai – cấu hình, cũng
như ứng dụng thực tế trong việc quản lý và vận hành hệ thống.
1.2. Mục tiêu, nhiệm vụ của đề tài
1.2.1. Mục tiêu tổng quát
Tìm hiểu và triển khai nền tảng Docker Container trên hệ điều hành Ubuntu nhằm
nắm vững cơ chế hoạt động, cách cấu hình và ứng dụng Docker trong triển khai hệ thống.
1.2.2. Mục tiêu cụ thể
Người học cần hiểu rõ bản chất của công nghệ Container và Docker, đồng thời
phân biệt được sự khác nhau giữa Máy ảo (VM) và Container. Bên cạnh đó, cần nắm
vững kiến trúc cùng các thành phần cốt lõi của Docker như Image, Container, Volume
và Network. Về triển khai thực tế, người học phải thành thạo cài đặt Docker Engine và
Docker Compose trên Ubuntu Server, biết viết Dockerfile để đóng gói một ứng dụng
Khoa Khoa Học Máy Tính 2
Nhóm 4 – Linux & PMMNM
TÌM HIỂU, TRIỂN KHAI VÀ CẤU HÌNH NỀN TẢNG DOCKER CONTAINER TRÊN
HỆ ĐIỀU HÀNH UBUNTU
web tĩnh thành Docker Image của riêng mình. Đối với các hệ thống phức tạp, cần sử
dụng docker-compose.yml để định nghĩa và vận hành nhiều container (như Web Server
và Database) một cách nhất quán, đồng thời quản lý dữ liệu an toàn bằng Docker Volume
nhằm tránh mất mát khi container bị xóa. Cuối cùng, người học phải biết viết script Bash
(deploy.sh) để tự động hóa toàn bộ quy trình triển khai, từ việc build image, dọn dẹp
môi trường cũ, khởi chạy container cho đến kiểm tra trạng thái với đầu vào là mã nguồn
và cấu hình, và đầu ra là một hệ thống ứng dụng hoàn chỉnh sẵn sàng hoạt động.
1.2.3. Nhiệm vụ của đề tài
● Thu thập và nghiên cứu tài liệu liên quan đến công nghệ container, Docker
và hệ điều hành Ubuntu.
● Phân tích kiến trúc Docker, bao gồm Docker Engine, Image, Container, Registry, Volume và Network.
Cài đặt Docker trên hệ điều hành Ubuntu và kiểm tra hoạt động của môi
trường sau khi cài đặt.
● Thực hiện các thao tác cơ bản trên Docker như tạo container, quản lý image,
quản lý volume và mạng của Docker.
● Cấu hình nâng cao, bao gồm thiết lập Docker Compose và triển khai các dịch vụ chạy đồng thời.
● Xây dựng ứng dụng mẫu (ví dụ: web server hoặc ứng dụng nhiều container)
để kiểm chứng khả năng triển khai bằng Docker.
● Đánh giá kết quả triển khai, phân tích ưu điểm – hạn chế và đề xuất hướng phát triển tiếp theo.
● Hoàn thiện báo cáo đồ án, trình bày đầy đủ quá trình nghiên cứu, triển khai
và kết quả đạt được.
1.3. Đối tượng, phạm vi nghiên cứu
1.3.1. Đối tượng nghiên cứu
Đối tượng nghiên cứu của đề tài là nền tảng Docker Container và các thành phần
liên quan như Docker Engine, Image, Container, Registry, Volume và Network. Bên
cạnh đó, đề tài cũng tập trung vào cách thức cài đặt, cấu hình và triển khai Docker trên
hệ điều hành Ubuntu. Một phần nội dung nghiên cứu hướng đến việc áp dụng Docker
để triển khai ứng dụng mẫu, nhằm minh họa khả năng hoạt động của nền tảng này trong môi trường thực tế.
Khoa Khoa Học Máy Tính 3
Nhóm 4 – Linux & PMMNM
TÌM HIỂU, TRIỂN KHAI VÀ CẤU HÌNH NỀN TẢNG DOCKER CONTAINER TRÊN
HỆ ĐIỀU HÀNH UBUNTU
1.3.2. Phạm vi nghiên cứu
Phạm vi của đề tài tập trung trong giới hạn nghiên cứu và triển khai Docker trên
hệ điều hành Ubuntu 24.04.3 LTS. Đề tài chỉ tập trung vào các thao tác cơ bản và nâng
cao trong Docker như quản lý image, container, volume, network và Docker Compose.
Đề tài không đi sâu vào các nền tảng orchestration phức tạp như Kubernetes hay Docker
Swarm. Các ứng dụng triển khai trong đề tài chỉ mang tính thử nghiệm, không hướng
tới hệ thống quy mô doanh nghiệp.
1.4. Ý nghĩa của đề tài
1.4.1. Ý nghĩa khoa học
Đề tài có ý nghĩa khoa học quan trọng khi giúp người học hiểu rõ bản chất của
công nghệ container và cơ chế hoạt động của Docker. Đây cũng là tài liệu nền tảng hỗ
trợ quá trình tiếp cận các công nghệ hiện đại như DevOps và điện toán đám mây và sử
dụng được Linux và mã nguồn mở. Bên cạnh đó, đề tài góp phần bổ sung kiến thức về
kiến trúc phần mềm hiện đại, đặc biệt là các mô hình triển khai ứng dụng theo hướng
linh hoạt và tách biệt giữa các thành phần hệ thống.
1.4.2. Ý nghĩa thực tiễn
Về mặt thực tiễn, đề tài hỗ trợ người học triển khai ứng dụng một cách nhanh
chóng, ổn định và tiết kiệm tài nguyên thông qua công nghệ Docker. Đồng thời, đề tài
giúp sinh viên và kỹ sư hệ thống nâng cao kỹ năng thực hành, từ đó dễ dàng áp dụng
vào các dự án thực tế. Ngoài ra, việc nghiên cứu và vận dụng Docker còn góp phần tăng
khả năng tự động hóa, tối ưu quy trình phát triển cũng như vận hành phần mềm trong môi trường hiện đại.
1.5. Bố cục của đề tài
Sau phần Mở đầu, báo cáo được trình bày trong ba chương, cụ thể như sau:
Chương 1. Tổng quan về đề tài. Trong chương này, báo cáo trình bày tổng quan
đề tài, bao gồm lý do chọn đề tài, bối cảnh hình thành vấn đề, ý nghĩa khoa học và thực
tiễn, cùng với mục tiêu nghiên cứu.
Chương 2. Cơ sở lý thuyết.
Chương 3. Triển khai và cấu hình hệ thống.
Cuối cùng là Kết luận, Tài liệu tham khảo và Phụ lục liên quan đến đề tài.
Khoa Khoa Học Máy Tính 4
Nhóm 4 – Linux & PMMNM
TÌM HIỂU, TRIỂN KHAI VÀ CẤU HÌNH NỀN TẢNG DOCKER CONTAINER TRÊN
HỆ ĐIỀU HÀNH UBUNTU
CHƯƠNG II. CƠ SỞ LÝ THUYẾT
2.1. Giới thiệu môn học Linux và Phần mềm mã nguồn mở
Môn học “Linux và Phần mềm mã nguồn mở” cung cấp cho sinh viên những kiến
thức nền tảng về hệ điều hành Linux, cơ chế hoạt động của phần mềm mã nguồn mở, và
cách vận hành hệ thống máy tính trong môi trường dòng lệnh. Thông qua môn học,
người học có khả năng hiểu rõ nguyên lý hoạt động của nhân hệ điều hành, cấu trúc hệ
thống tệp, quản lý tiến trình, quyền truy cập, và phương thức cài đặt phần mềm trong
Linux. Môn học cũng nhấn mạnh triết lý phần mềm mã nguồn mở, nơi cộng đồng đóng
vai trò trung tâm trong việc phát triển, chia sẻ và cải tiến mã nguồn. Nhờ đó, sinh viên
có thể tiếp cận với các công cụ, hệ điều hành và ứng dụng được sử dụng rộng rãi trong
môi trường phát triển phần mềm, điện toán đám mây và hệ thống máy chủ hiện đại. Đây
chính là nền tảng quan trọng để nghiên cứu và triển khai các công nghệ mới như Docker,
Kubernetes hay CI/CD trong thực tế.
2.2. Phần mềm mã nguồn mở
2.2.1. Phần mềm nguồn mở là gì?
Phần mềm nguồn mở (Open source software – OSS) là phần mềm được phân
phối cùng với mã nguồn, do đó, luôn sẵn sàng đối với việc sử dụng, sửa đổi và chia sẻ quyền truy cập.
Mã nguồn là một phần của phần mềm mà hầu hết người dùng không bao giờ thấy.
Đó là mã được các lập trình viên máy tính thiết lập để kiểm soát hoạt động của một
chương trình hoặc ứng dụng. Các lập trình viên có quyền truy cập vào mã nguồn, tiến
hành các thay đổi chương trình bằng cách thêm hoặc sửa chữa các phần trong đó. OSS
thường bao gồm một giấy phép cho phép các lập trình viên sửa đổi phần mềm để phù
hợp nhất với nhu cầu của họ và kiểm soát cách phần mềm có thể được phân phối.
2.2.2. Lịch sử của phần mềm mã nguồn mở
Ý tưởng về việc cung cấp mã nguồn có sẵn và miễn phí được đề xuất từ năm
1983 bởi Richard Stallman, một lập trình viên tại MIT. Stallman tin rằng lập trình viên
nên được trao quyền truy cập vào phần mềm để sửa đổi nó theo ý muốn, mục tiêu là
nhằm tìm hiểu và từng bước cải thiện phần mềm sao cho tối ưu nhất. Stallman bắt đầu
phát hành code miễn phí theo giấy phép của riêng mình, được gọi là GNU Public
License. Cách tiếp cận và tư tưởng của Stallman đã đặt tiền đề cho sự hình thành của
Sáng kiến Nguồn mở (Open Source Initiative) vào năm 1998.
Khoa Khoa Học Máy Tính 5
Nhóm 4 – Linux & PMMNM
TÌM HIỂU, TRIỂN KHAI VÀ CẤU HÌNH NỀN TẢNG DOCKER CONTAINER TRÊN
HỆ ĐIỀU HÀNH UBUNTU
2.2.3. Ưu và nhược điểm của phần mềm mã nguồn mở ● Ưu điểm
o Phần mềm mã nguồn mở là hoàn toàn miễn phí
o Phần mềm mã nguồn mở có khả năng linh hoạt cao, các nhà phát triển
có thể kiểm tra hoạt động của mã và thực hiện các thay đổi về tính năng
để phù hợp hơn với nhu cầu riêng của họ.
o Mã nguồn mở mang tính ổn định; có thể được sử dụng cho các dự án dài hạn.
o Mã nguồn mở thúc đẩy đổi mới, sáng tạo. Các lập trình viên có thể sử
dụng mã có sẵn để cải thiện phần mềm và thậm chí đưa ra những đổi mới của riêng họ.
o Mã nguồn mở được liên tục sửa đổi và cải tiến bởi cộng đồng cùng tham gia phát triển.
o Mã nguồn mở mang tới cho các lập trình viên một cơ hội học tập tuyệt
vời. Bởi mã nguồn mở có thể truy cập công khai, sinh viên do đó dễ dàng
nghiên cứu, học cách phát triển phần mềm, tiếp nhận nhận xét, đánh giá
từ những người khác, đồng thời chia sẻ những lỗi gặp phải để tránh việc
lặp lại các lỗi tương tự. ● Nhược điểm
o Mã nguồn mở có thể khó sử dụng, khó thiết lập và thiếu một giao diện
thân thiện với người dùng.
o Mã nguồn mở có thể gây ra các vấn đề về tính tương thích. Khi lập trình
phần cứng độc quyền với OSS, thường cần có các trình điều khiển
chuyên biệt chỉ có sẵn từ nhà sản xuất phần cứng.
Phần mềm mã nguồn mở có thể đặt ra các vấn đề về trách nhiệm pháp lý. Không
giống như phần mềm thương mại, được kiểm soát hoàn toàn bởi nhà cung cấp, mã nguồn
mở hiếm khi có bất kỳ bảo hành, trách nhiệm pháp lý hoặc bồi thường vi phạm nào.
Điều này khiến người dùng của phần mềm mã nguồn mở có trách nhiệm duy trì việc
tuân thủ các nghĩa vụ pháp lý.
Khoa Khoa Học Máy Tính 6
Nhóm 4 – Linux & PMMNM
TÌM HIỂU, TRIỂN KHAI VÀ CẤU HÌNH NỀN TẢNG DOCKER CONTAINER TRÊN
HỆ ĐIỀU HÀNH UBUNTU Hình 1 - Open Source
2.3. Tổng quan về hệ điều hành Linux 2.3.1. Linux là gì?
Hệ điều hành Linux là một nền tảng mã nguồn mở hoàn toàn miễn phí được xây
dựng trên ngôn ngữ C, với nhân Linux (Kernel Linux) cung cấp các công cụ và tiện ích
hữu ích cho việc quản lý hệ thống, lập trình và xử lý các tác vụ khác. Linux là lựa chọn
phổ biến cho cá nhân và doanh nghiệp nhờ vào tính ổn định, bảo mật cao và khả năng tùy chỉnh.
Hệ điều hành này được ứng dụng rộng rãi trên các thiết bị như máy tính cá nhân,
máy chủ và thiết bị nhúng, Linux hỗ trợ nhiều bản phân phối như Debian, Ubuntu, và
RHEL, giúp đáp ứng nhu cầu đa dạng của người dùng.
2.3.2. Cấu trúc của hệ điều hành Linux
● Cấu trúc cơ bản của Linux gồm 3 thành phần chính là:
o Kernel (Nhân): Là phần quan trọng nhất trong Linux, có nhiệm vụ quản
lý các tài nguyên của phần cứng như bộ nhớ, module, bộ vi xử lý… và
giúp phần cứng có thể giao tiếp với các ứng dụng trên hệ điều hành.
o Shell: Là nơi chứa và thực thi các dòng lệnh được yêu cầu đến cho Kernel
xử lý từ người dùng hoặc ứng dụng. Đây được xem là cầu nối giữa Application và Kernel.
Khoa Khoa Học Máy Tính 7
Nhóm 4 – Linux & PMMNM
TÌM HIỂU, TRIỂN KHAI VÀ CẤU HÌNH NỀN TẢNG DOCKER CONTAINER TRÊN
HỆ ĐIỀU HÀNH UBUNTU
o Application: Là các ứng dụng hoặc tiện ích được người dùng cài đặt và
chạy trên server để phục vụ nhu cầu sử dụng (Ví dụ: Proxy, Samba và FTP…).
Hình 2 - Linux phần mền mã nguồn mở 2.4. Ubuntu là gì ?
2.4.1. Giới thiệu hệ điều hành Ubuntu
Windows và macOS là hai trong số những hệ điều hành phổ biến nhất hiện nay.
Tuy nhiên, Linux đã trở nên phổ biến hơn mỗi năm không chỉ đối với các nhà phát triển
mà cả những người tiêu dùng bình thường. Linux là một lựa chọn tuyệt vời nếu bạn quan
tâm đến việc thiết lập VPS hoặc dùng thử một hệ điều hành miễn phí. Nó có nhiều bản
phân phối khác nhau, chẳng hạn như Fedora, Debian và CentOS.
Ubuntu là một trong những hệ điều hành sử dụng nhân Linux phổ biến nhất. Bạn
có thể cài đặt nó trên máy tính cá nhân và máy chủ. Ubuntu là hệ điều hành mã nguồn
mở và điều đó có nghĩa là bạn được phép sửa đổi mã của nó, tạo và cài đặt bao nhiêu
bản sao tùy thích, phân phối tùy chỉnh ở bất cứ đâu mà không cần phải trả tiền để có giấy phép sử dụng.
Ubuntu được giới thiệu vào năm 2004 bởi công ty Canonical của Anh. Canonical
chịu trách nhiệm phát hành phiên bản Ubuntu mới sáu tháng một lần, đồng thời họ cũng
cung cấp máy chủ lưu trữ cho Cộng đồng Ubuntu và cho phép mọi người trên toàn thế
giới đóng góp để kiểm tra lỗi phần mềm, trả lời câu hỏi cũng như hỗ trợ kỹ thuật miễn phí.
Khoa Khoa Học Máy Tính 8
Nhóm 4 – Linux & PMMNM