TRƯỜNG ĐẠI HC CÔNG NGH THÔNG TIN &
TRUYN THÔNG VIT-HÀN
KHOA KHOA HC MÁY TÍNH
ĐỒ ÁN MÔN HC
LINUX & PHN MM MÃ NGUN M
TÌM HIU, TRIN KHAI VÀ CU HÌNH
NN TNG DOCKER CONTAINER TRÊN
H ĐIU HÀNH UBUNTU
Sinh viên thc hin: Nguyn Văn Rin - 23IT231
Nguyn Anh Tun - 23IT297
Nguyn Quc Vin - 23IT306
Hunh Tun Tú - 23IT293
Lp: Linux và phn mm ngun m (5)
Giảng viên hướng dn: ThS. Ninh Khánh Chi
Đà Nẵng, tháng 11 năm 2025
TRƯỜNG ĐẠI HC CÔNG NGH THÔNG TIN &
TRUYN THÔNG VIT-HÀN
KHOA KHOA HC MÁY TÍNH
ĐỒ ÁN MÔN HC
LINUX & PHN MM MÃ NGUN M
TÌM HIU, TRIN KHAI VÀ CU HÌNH
NN TNG DOCKER CONTAINER TRÊN
H ĐIU HÀNH UBUNTU
Sinh viên thc hin: Nguyn Văn Rin - 23IT231
Nguyn Anh Tun - 23IT297
Nguyn Quc Vin - 23IT306
Hunh Tun Tú - 23IT293
Lp: Linux và phn mm ngun m (5)
Giảng viên hướng dn: ThS. Ninh Khánh Chi
Đà Nẵng, tháng 11 năm 2025
i
NHN XÉT CA GIẢNG VIÊN HƯỚNG DN
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
………………………………………………………………………………………
ii
LI CẢM ƠN
Để đạt được kết qu tt trong d án y, chúng em đã nhận được s h tr
giúp đ t ging viên ph trách môn Linux Phn mm ngun m. Vi lòng biết
ơn sâu sắc chân thành, chúng em xin gi li cm ơn sâu sc nhất đến toàn th Quý
Thầy đã tạo điều kin thun li h tr chúng em trong sut quá trình hc tp,
nghiên cu và thc hiện đề tài này.
Trưc hết, chúng em xin gi li chào trân trng, li chúc sc khe lòng biết
ơn sâu sắc đến các thy của Trường Đại hc Công ngh Thông tin Truyn thông
Vit Hàn. Nh s quan tâm, ging dy tận tình hướng dẫn chu đáo của quý thy cô,
những người đã trang b cho chúng em các k năng cn thiết, chúng em đã có th hoàn
thành đ án môn hc này.
Đặc bit, chúng em xin bày t lòng biết ơn chân thành nhất đến giảng viên ng
dn, ThS. Ninh Khánh Chi, s quan tâm tn tình nhng h tr kiến thc chuyên
môn ca cô đã giúp chúng em hoàn thành tốt d án trong thi gian va qua.
Do thi gian hn chế kinh nghim còn hn chế, bài làm ca chúng em khó
tránh khi nhng thiếu sót. Chúng em rt mong nhận đưc s góp ý ng dn ca
quý thy để chúng em cơ hội b sung, nâng cao kiến thc, phc v tốt hơn cho
công vic thc tế sau này.
Sinh viên,
Nhom 4
iii
MC LC
LI CẢM ƠN ................................................................................................................. ii
MC LC ..................................................................................................................... iii
DANH MC HÌNH V .................................................................................................vi
DANH MC BNG ................................................................................................... viii
DANH MC VIT TT ................................................................................................ix
LI 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. Mc tiêu tng quát .......................................................................................... 2
1.2.2. Mc tiêu c th ............................................................................................... 2
1.2.3. Nhim v ca đ tài ........................................................................................ 3
1.3. Đối tượng, phạm vi nghiên cứu............................................................................ 3
1.3.1. Đối tượng nghiên cu ..................................................................................... 3
1.3.2. Phm vi nghiên cu ........................................................................................ 4
1.4. Ý nghĩa của đề tài ................................................................................................. 4
1.4.1. Ý nghĩa khoa hc ............................................................................................ 4
1.4.2. Ý nghĩa thực tin ............................................................................................. 4
1.5. Bố cục của đề tài .................................................................................................. 4
CHƯƠNG II. CƠ S LÝ THUYT ............................................................................... 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. Phn mm ngun m là gì? ............................................................................ 5
2.2.2. Lch s ca phn mm mã ngun m ............................................................. 5
2.2.3. Ưu và nhược đim ca phn mm mã ngun 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. Cu trúc ca h điều hành Linux .................................................................... 7
2.4. Ubuntu là gì ? ....................................................................................................... 8
2.4.1. Gii thiu h điều hành Ubuntu ...................................................................... 8
iv
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 ClientServer ....................................................................................... 12
2.7.1. Định nghĩa..................................................................................................... 12
2.7.2. Ưu điểm và nhược đim ............................................................................... 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. TRIN KHAI VÀ CU HÌNH H THNG ....................................... 24
3.1. Chuẩn bị môi trường triển khai .......................................................................... 24
3.1.1. Thông s phn cng và phn mm ............................................................... 24
3.1.2. Cài đặt h điu hành và cu hình mng cho server ...................................... 26
3.1.3. Cài đặt các công c nn tng 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. Chun bng c trên máy client qun tr (Windows) ................................. 33
3.1.5. T chức thư mục d án trên server ............................................................... 34
3.2.1. Tng quan h thng Project Task Board ...................................................... 35
3.2.2. Ba vai trò máy trong h thng ...................................................................... 35
3.2.3. Mô hình mng: LAN ni b ......................................................................... 37
v
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. Cu 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. Nhn xét chung ....................................................................................... 46
3.4.5. File cu hình ng dng và CORS ................................................................. 46
3.4.5.1. application.yml: Cu 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 din Website ......................................................................................... 58
3.8. Kiểm tra và đánh giá hoạt động dịch v ............................................................ 59
KT LUN VÀ HƯNG PHÁT TRIN .................................................................... 60
1. Kết quả đạt được ................................................................................................... 60
2. Hướng phát triển ................................................................................................... 60
TÀI LIU THAM KHO ............................................................................................. 61
vi
DANH MC HÌNH V
Hình 1 - Open Source ..................................................................................................... 7
Hình 2 - Linux phn mn mã ngun m ........................................................................ 8
Hình 3 Ubuntu ............................................................................................................. 9
Hình 4 - Bash ................................................................................................................ 11
Hình 5 Giao thc SSH ............................................................................................... 12
Hình 6 - Mô hình Client Server .................................................................................... 13
Hình 7 - Cu 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 chc h thng .......................................................................................... 25
Hình 19 - Cp nhp h thng ........................................................................................ 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 - Kim tra trng thái dch v........................................................................... 28
Hình 23 - G các gói Docker cũ ................................................................................... 29
Hình 24 - Tạo thư mục cha key và ti GPG key ca Docker ..................................... 29
Hình 25 - Thêm file cu 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 - Kim tra dch v Docker đã chạy chưa ........................................................ 31
Hình 28 - Test hello-world ........................................................................................... 31
Hình 29 - Cài git ........................................................................................................... 32
vii
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 - Cu trúc mã ngun 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 cu hình ng dng Backend .................................................................. 46
Hình 40 - File cu hình CORS ..................................................................................... 47
Hình 41 - Frontend .env ................................................................................................ 49
Hình 42 - Script Bash cu hình và trin khai t động deploy.sh .................................. 50
Hình 43 - Script Bash cu hình và trin khai t động deploy.sh .................................. 51
Hình 44 - Script Bash cu hình và trin khai t động deploy.sh .................................. 52
Hình 45 - Script Bash cu hình và trin khai t động deploy.sh .................................. 53
Hình 46 - Script Bash cu hình và trin khai t động deploy.sh .................................. 54
Hình 47 - Khi chy Deploy.sh .................................................................................... 56
Hình 48 - Chy ./deploy.sh deploy ............................................................................... 56
Hình 49 - Kết qu khi deploy bng deploy.sh .............................................................. 57
Hình 50 - Chy ./deploy.sh logs .................................................................................. 57
Hình 51 - Chy ./deploy.sh clean ................................................................................. 57
Hình 52 - Giao din Website ........................................................................................ 58
Hình 53 - Giao din Website ........................................................................................ 58
viii
DANH MC BNG
Bng 1- Bng danh mc viết tt ...................................................................................... x
Bng 2 - Bng so sánh h điều hành Ubuntu và Windows ........................................... 10
Bng 3- Bng kim tra và đánh giá hoạt đông dch v ................................................. 59
Bng 4- Bảng đánh giá tiến độ ...................................................................................... 63
ix
DANH MC VIT TT
VIT TT
NI DUNG
VM
Virtual Machine y o
SSH
Secure Shell Giao thc truy cp và qun tr t xa
CLI
Command Line Interface Giao din dòng lnh
GUI
Graphical User Interface Giao din đồ ha
CSV
Comma-Separated Values Định dng d liu dng bng
APT
Advanced Package Tool H thng qun lý gói trên Ubuntu
DB
Database Cơ sở d liu
API
Application Programming Interface Giao din lp trình ng dng
CSDL
Cơ sở d liu
REST API
Representational State Transfer API API dng REST
LAN
Local Area Network Mng cc b
CI/CD
Continuous Integration / Continuous Deployment Tích hp & trin
khai liên tc
OS
Operating System H điều hành
IDE
Integrated Development Environment Môi trường phát trin tích hp
JDK
Java Development Kit B phát trin Java
x
JRE
Java Runtime Environment i trường chy Java
npm
Node Package Manager Trình qun lý gói Node.js
GPG
GNU Privacy Guard Công c mã hóa/ký s
IP
Internet Protocol Địa ch mng
HTTP/HTTPS
HyperText Transfer Protocol / Secure Giao thc web
YAML
YAML Ain’t Markup Language Định dng tp YAML
UFW
Uncomplicated Firewall ng la ca Ubuntu
SPA
Single Page Application ng dng mt trang
Bng 1- Bng danh mc viết tt
M HIU, TRIN KHAI CU NH NN TNG DOCKER CONTAINER TRÊN
H ĐIU HÀNH UBUNTU
Khoa Khoa Học Máy Tính 1 Nhóm 4 Linux & PMMNM
LI M ĐẦU
Trong bi cnh công ngh thông tin phát trin mnh m, nhu cu trin khai các
ng dng mt cách linh hot, ổn định và d dàng m rng ngày càng tr nên quan trng.
Các doanh nghip nhà phát triển đang dần chuyn dch t mô hình trin khai truyn
thống sang các phương pháp hiện đại hơn, trong đó công ngh container đặc bit
Docker đã tr thành mt trong những xu hướng ch đạo. Docker cho phép đóng gói
ng dng cùng toàn b môi trường chy vào các container nhẹ, độc lp và có kh năng
hot đng nht quán trên nhiu h thng khác nhau.
Xut phát t tm quan trọng đó, đề tài “Tìm hiu, trin khai cu hình nn tng
Docker Container trên h điều hành Ubuntu” được thc hin nhằm giúp ngưi hc nm
vng bn cht, kiến trúc kh năng ng dng ca Docker trong thc tin. Bên cnh
vic nghiên cu thuyết, đề tài còn tp trung trin khai thc nghim trên Ubuntu Server,
xây dựng Dockerfile để đóng gói ng dng, s dụng Docker Compose để vn hành h
thng nhiều container, cũng như tự động hóa quy trình trin khai thông qua Bash script.
Đề tài ớng đến mc tiêu giúp người hc hiu cách thc hoạt động ca
Docker, y dng môi trường trin khai hiện đại nâng cao k năng triển khai ng
dụng theo ng DevOps. Nội dung báo cáo đưc trình y theo tng phn ràng, t
tng quan công ngh, phân tích các thành phn cốt lõi cho đến trin khai thc tế và đánh
giá kết qu.
Hy vng rng bài báo cáo này s mang đến cái nhìn h thng và hu ích v công
ngh Docker, đng thi làm tài liu tham kho cho những ai quan tâm đến lĩnh vực trin
khai ng dng hiện đại.
M HIU, TRIN KHAI CU NH NN TNG DOCKER CONTAINER TRÊN
H ĐIU HÀNH UBUNTU
Khoa Khoa Học Máy Tính 2 Nhóm 4 Linux & PMMNM
CHƯƠNG I: TỔNG QUAN ĐỀ TÀI
1.1. Gii thiu
Trong bi cnh công ngh thông tin phát trin mnh m, các ng dng hin đại
đòi hỏi kh năng trin khai nhanh, d m rộng và đảm bo tính ổn định cao. Các phương
pháp trin khai truyn thng da trên máy o (Virtual Machine) tuy ph biến nhưng lại
tiêu tn nhiu tài nguyên thiếu tính linh hot khi chuyn giao hoc m rng h thng.
Điu này dẫn đến nhu cu v mt gii pháp trin khai ng dng nh hơn, hiệu qu hơn
và d quản lý hơn.
Docker mt nn tng container hóa đã trở thành công c quan trng trong quá
trình phát trin và vn hành phn mềm (DevOps). Docker cho phép đóng gói ng dng
cùng môi trường chy ca vào các container nh gọn, độc lp d dàng trin khai
trên nhiều môi trưng khác nhau. Nh đó, Docker giúp gim thiểu xung đột môi trưng,
tăng tc đ trin khai và tối ưu hóa việc s dng tài nguyên h thng.
Ubuntu, mt trong nhng h điều hành Linux ph biến nht hin nay, được la
chọn làm môi trường trin khai Docker bi tính ổn định, mã ngun m, d s dng
kh năng tương thích cao với các công c DevOps. Vic m hiu, trin khai và cu hình
Docker trên Ubuntu giúp sinh viên k hệ thng nm vng cách thc hoạt động
của container, đồng thi to nn tng cho các kiến trúc hiện đại như microservices
CI/CD.
vy, đề tài Tìm hiu, trin khai cu hình nn tng Docker Container
trên h điu hành Ubuntuđược thc hin nhằm giúp người hc hiu khái nim
container, các thành phần trong Docker, quy trình cài đt trin khai cu hình, cũng
như ứng dng thc tế trong vic qun lý và vn hành h thng.
1.2. Mc tiêu, nhim v của đề tài
1.2.1. Mục tiêu tổng quát
Tìm hiu trin khai nn tng Docker Container trên h điều hành Ubuntu nhm
nm vững chế hoạt động, cách cu hình ng dng Docker trong trin khai h
thng.
1.2.2. Mục tiêu cụ th
Ngưi hc cn hiu bn cht ca công ngh Container Docker, đồng thi
phân biệt được s khác nhau gia y o (VM) Container. Bên cạnh đó, cần nm
vng kiến trúc cùng các thành phn ct lõi ca Docker như Image, Container, Volume
và Network. V trin khai thc tế, ngưi hc phi 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 dng
M HIU, TRIN KHAI CU NH NN TNG DOCKER CONTAINER TRÊN
H ĐIU HÀNH UBUNTU
Khoa Khoa Học Máy Tính 3 Nhóm 4 Linux & PMMNM
web tĩnh thành Docker Image ca riêng mình. Đối vi các h thng phc tp, cn s
dng docker-compose.yml để định nghĩa và vận hành nhiều container (như Web Server
Database) mt cách nhất quán, đng thi qun d liu an toàn bng Docker Volume
nhm tránh mt mát khi container b xóa. Cui cùng, người hc phi biết viết script Bash
(deploy.sh) để t động hóa toàn b quy trình trin khai, t vic build image, dn dp
môi trường cũ, khởi chạy container cho đến kim tra trng thái với đầu vào là mã ngun
và cấu hình, và đầu ra là mt h thng ng dng hoàn chnh sn sàng hot đng.
1.2.3. Nhiệm vụ của đề tài
Thu thp nghiên cu 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 gm Docker Engine, Image, Container,
Registry, Volume Network.
Cài đặt Docker trên h điều hành Ubuntu và kim tra hoạt động ca môi
trường sau khi cài đặt.
Thc hiện các thao tác cơ bản trên Docker như tạo container, qun lý image,
qun lý volume và mng ca Docker.
Cu hình nâng cao, bao gm thiết lp Docker Compose trin khai các dch
v chy đồng thi.
Xây dng ng dng mu (ví d: web server hoc ng dng nhiu container)
để kim chng kh năng triển khai bng Docker.
Đánh giá kết qu triển khai, phân tích ưu đim hn chế đề xuất ng
phát trin tiếp theo.
Hoàn thiện báo cáo đồ án, trình y đy đủ quá trình nghiên cu, trin khai
và kết qu đạt đưc.
1.3. Đối tượng, phm vi nghiên cu
1.3.1. Đối tượng nghiên cứu
Đối tượng nghiên cu của đề tài là nn tng Docker Container và các thành phn
liên quan như Docker Engine, Image, Container, Registry, Volume Network. Bên
cạnh đó, đề tài cũng tập trung vào cách thức cài đt, cu hình và trin khai Docker trên
h điều hành Ubuntu. Mt phn ni dung nghiên cu hướng đến vic áp dng Docker
để trin khai ng dng mu, nhm minh ha kh năng hoạt động ca nn tng này trong
môi trường thc tế.
M HIU, TRIN KHAI CU NH NN TNG DOCKER CONTAINER TRÊN
H ĐIU HÀNH UBUNTU
Khoa Khoa Học Máy Tính 4 Nhóm 4 Linux & PMMNM
1.3.2. Phạm vi nghiên cứu
Phm vi của đề tài tp trung trong gii hn nghiên cu và trin khai Docker trên
h điều hành Ubuntu 24.04.3 LTS. Đ tài ch tp 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 o các nền tng orchestration phc tạp như Kubernetes hay Docker
Swarm. Các ng dng triển khai trong đ tài ch mang tính th nghiệm, không ng
ti h thng quy mô doanh nghip.
1.4. Ý nghĩa của đề tài
1.4.1. Ý nghĩa khoa học
Đề tài ý nghĩa khoa học quan trọng khi giúp người hc hiu bn cht ca
công ngh container chế hoạt động của Docker. Đây cũng tài liệu nn tng h
tr quá trình tiếp cn các công ngh hiện đại như DevOps điện toán đám mây và s
dụng đưc Linux ngun m. Bên cạnh đó, đ tài góp phn b sung kiến thc v
kiến trúc phn mm hiện đại, đặc bit các hình trin khai ng dụng theo hướng
linh hot và tách bit gia các thành phn h thng.
1.4.2. Ý nghĩa thực tiễn
V mt thc tiễn, đề tài h tr người hc trin khai ng dng mt cách nhanh
chóng, ổn định tiết kim tài nguyên thông qua công ngh Docker. Đồng thời, đề tài
giúp sinh viên k sư hệ thng nâng cao k năng thực hành, t đó dễ dàng áp dng
vào các d án thc tế. Ngoài ra, vic nghiên cu và vn dng 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 phn mm trong
môi trường hiện đại.
1.5. B cc của đề tài
Sau phn M đầu, báo cáo đưc trình bày trong ba chương, c th như sau:
Chương 1. Tng quan v đề tài. Trong chương y, báo cáo trình bày tng quan
đề tài, bao gm lý do chọn đề tài, bi cnh hình thành vấn đề, ý nghĩa khoa hc và thc
tin, cùng vi mc tiêu nghiên cu.
Chương 2. Cơ sở lý thuyết.
Chương 3. Trin khai và cu hình h thng.
Cui cùng là Kết lun, Tài liu tham khoPh lc liên quan đến đề tài.
M HIU, TRIN KHAI CU NH NN TNG DOCKER CONTAINER TRÊN
H ĐIU HÀNH UBUNTU
Khoa Khoa Học Máy Tính 5 Nhóm 4 Linux & PMMNM
CHƯƠNG II. CƠ SỞ LÝ THUYT
2.1. Gii thiu môn hc Linux và Phn mm mã ngun m
Môn học “Linux Phần mm ngun mở” cung cp cho sinh viên nhng kiến
thc nn tng v h điều hành Linux, cơ chế hoạt động ca phn mm mã ngun m, và
cách vn hành h thống máy tính trong môi trưng ng lnh. Thông qua môn hc,
người hc có kh năng hiểu rõ nguyên lý hot động ca nhân h điều hành, cu trúc h
thng tp, qun tiến trình, quyn truy cập, phương thức cài đặt phn mm trong
Linux. Môn học cũng nhn mnh triết lý phn mm mã ngun mở, nơi cộng đồng đóng
vai trò trung m trong vic phát trin, chia s và ci tiến ngun. Nh đó, sinh viên
có th tiếp cn vi các công c, h điều hành ng dụng đưc s dng rng rãi trong
môi trưng phát trin phn mềm, điện toán đám y và hệ thng máy ch hiện đại. Đây
chính nn tng quan trọng để nghiên cu trin khai các công ngh mới như Docker,
Kubernetes hay CI/CD trong thc tế.
2.2. Phn mm mã ngun m
2.2.1. Phần mềm nguồn mở là gì?
Phn mm ngun m (Open source software OSS) phn mềm được phân
phi cùng vi mã nguồn, do đó, luôn sẵn sàng đối vi vic s dng, sa đổi và chia s
quyn truy cp.
ngun mt phn ca phn mm hu hết ngưi dùng không bao gi thy.
Đó được các lp trình viên y tính thiết lập để kim soát hoạt động ca mt
chương trình hoc ng dng. Các lp trình viên quyn truy cp vào ngun, tiến
hành các thay đổi chương trình bằng cách thêm hoc sa cha các phần trong đó. OSS
thưng bao gm mt giy phép cho phép các lp trình viên sửa đổi phn mềm để p
hp nht vi nhu cu ca h và kim soát cách phn mm có th được phân phi.
2.2.2. Lịch sử của phần mềm mã nguồn m
Ý ng v vic cung cp ngun sn miễn phí được đề xut t m
1983 bi Richard Stallman, mt lp trình viên ti MIT. Stallman tin rng lp trình viên
nên được trao quyn truy cp vào phn mềm để sa đổi theo ý mun, mc tiêu
nhm tìm hiu từng bước ci thin phn mm sao cho tối ưu nht. Stallman bắt đầu
phát hành code min phí theo giy phép của riêng mình, được gi GNU Public
License. Cách tiếp cận tưởng của Stallman đã đặt tiền đề cho s hình thành ca
Sáng kiến Ngun m (Open Source Initiative) vào năm 1998.
M HIU, TRIN KHAI CU NH NN TNG DOCKER CONTAINER TRÊN
H ĐIU HÀNH UBUNTU
Khoa Khoa Học Máy Tính 6 Nhóm 4 Linux & PMMNM
2.2.3. Ưu và nhược điểm của phần mềm mã nguồn mở
Ưu điểm
o Phn mm mã ngun m là hoàn toàn min p
o Phn mm ngun m kh năng linh hot cao, các nhà phát trin
có th kim tra hot đng ca mã và thc hiện các thay đổi v tính năng
để phù hợp hơn với nhu cu riêng ca h.
o Mã ngun m mang tính ổn định; có th được s dng cho các d án dài
hn.
o ngun m thúc đẩy đi mi, sáng to. Các lp trình viên th s
dng có sẵn để ci thin phn mm thậm chí đưa ra những đổi mi
ca riêng h.
o Mã ngun m được liên tc sa đổi và ci tiến bi cộng đồng cùng tham
gia phát trin.
o ngun m mang ti cho các lp trình viên một hội hc tp tuyt
vi. Bi ngun m th truy cập ng khai, sinh viên do đó dễ dàng
nghiên cu, hc cách phát trin phn mm, tiếp nhn nhận xét, đánh giá
t những người khác, đng thi chia s nhng li gp phi đ tránh vic
lp li các lỗi tương tự.
Nhưc đim
o ngun m th ks dng, khó thiết lp thiếu mt giao din
thân thin vi ngưi dùng.
o Mã ngun mth gây ra các vấn đề v tính tương thích. Khi lp trình
phn cứng độc quyn với OSS, thưng cần các trình điều khin
chuyên bit ch có sn t nhà sn xut phn cng.
Phn mm mã ngun m có th đặt ra các vấn đề v trách nhim pháp lý. Không
giống như phần mềm thương mại, được kim soát hoàn toàn bi nhà cung cp, ngun
m hiếm khi bt k bo hành, trách nhim pháp hoc bồi thưng vi phm nào.
Điu y khiến ngưi dùng ca phn mm ngun m trách nhim duy trì vic
tuân th các nghĩa v pháp lý.
M HIU, TRIN KHAI CU NH NN TNG DOCKER CONTAINER TRÊN
H ĐIU HÀNH UBUNTU
Khoa Khoa Học Máy Tính 7 Nhóm 4 Linux & PMMNM
Hình 1 - Open Source
2.3. Tng quan v h điu hành Linux
2.3.1. Linux là gì?
H điều hành Linux là mt nn tng mã ngun m hoàn toàn miễn phí đưc xây
dng trên ngôn ng C, vi nhân Linux (Kernel Linux) cung cp các công c và tin ích
hu ích cho vic qun lý h thng, lp trình và x lý các tác v khác. Linux là la chn
ph biến cho nhân doanh nghip nh vào tính ổn định, bo mt cao kh năng
tùy chnh.
H điều hành y được ng dng rng rãi trên các thiết b như máy tính cá nhân,
máy ch thiết b nhúng, Linux h tr nhiu bn phân phối như Debian, Ubuntu,
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 ca Linux gm 3 thành phn chính là:
o Kernel (Nhân): Là phn quan trng nht trong Linux, có nhim v qun
các tài nguyên ca phn cứng như b nh, module, b vi x lý…
giúp phn cng có th giao tiếp vi các ng dng trên h điều hành.
o Shell: nơi chứa thc thi các dòng lệnh được yêu cầu đến cho Kernel
x t người ng hoc ng dụng. Đây được xem cu ni gia
Application và Kernel.
M HIU, TRIN KHAI CU NH NN TNG DOCKER CONTAINER TRÊN
H ĐIU HÀNH UBUNTU
Khoa Khoa Học Máy Tính 8 Nhóm 4 Linux & PMMNM
o Application: các ng dng hoc tiện ích được người dùng cài đặt
chy trên server để phc v nhu cu s dng (Ví d: Proxy, Samba
FTP…).
Hình 2 - Linux phn mn mã ngun 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 nhng h điều hành ph biến nht hin nay.
Tuy nhiên, Linux đã tr nên ph biến hơn mỗi năm không chỉ đối vi các nhà phát trin
c những người tiêu dùng bình thường. Linux mt la chn tuyt vi nếu bn quan
tâm đến vic thiết lp VPS hoc dùng th mt h điều hành min phí. Nó nhiu bn
phân phi khác nhau, chng hạn như Fedora, Debian và CentOS.
Ubuntu là mt trong nhng h điều hành s dng nhân Linux ph biến nht. Bn
th cài đặt trên y tính nhân máy ch. Ubuntu h điu hành ngun
m điều đó nghĩa bạn được phép sửa đổi ca nó, tạo cài đặt bao nhiêu
bn sao y thích, phân phi y chnh bt c đâu không cn phi tr tiền để
giy phép s dng.
Ubuntu đưc gii thiệu vào m 2004 bởi công ty Canonical ca Anh. Canonical
chu trách nhim phát hành phiên bn Ubuntu mi sáu tháng mt lần, đồng thi h cũng
cung cp y ch u trữ cho Cộng đồng Ubuntu cho phép mọi ngưi trên toàn thế
giới đóng góp để kim tra li phn mm, tr li câu hỏi cũng như hỗ tr k thut min
phí.

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ảoPhụ 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