Tải bản đầy đủ (.pdf) (126 trang)

LUẬN VĂN CÔNG NGHỆ THÔNG TIN VỀ DỮ LIỆU MỞ

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (5.05 MB, 126 trang )

ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC BÁCH KHOA
KHOA KHOA HỌC VÀ KĨ THUẬT MÁY TÍNH

LUẬN VĂN TỐT NGHIỆP ĐẠI HỌC
XÂY DỰNG NỀN TẢNG ỨNG DỤNG VỀ DỮ LIỆU
TRÊN HỆ THỐNG DỮ LIỆU MỞ
Ngành: Khoa học máy tính

TP. HỒ CHÍ MINH, 2020


Tóm tắt luận văn
Nội dung thực hiện bao gồm các phần:
• Phần một: Mở đầu. Giới thiệu và mục tiêu của đề tài luận văn.
• Phần hai: Tổng quan. Những khái niệm, kiến thức liên quan đến đề tài luân văn.
• Phần ba: Kiến trúc hệ thống. Hiện thực cho kiến trúc hệ thống dữ liệu mở và các







cơng nghệ được sử dụng cho hệ thống.
Phần bốn: Tích hợp tính năng triển khai và chia sẻ ứng dụng trên CKAN. Phần
này cung cấp phương pháp thiết kế phần mở rộng cho tính năng triển khai và chia
sẻ ứng dụng trên CKAN.
Phần năm: Hệ thống xây dựng và thực thi ứng dụng. Phân tích, thiết kế và hiện
thực hệ thống xây dựng và thực thi ứng dụng.
Phần sáu: Quản lý nhật ký, thống kê và theo dõi hệ thống. Xây dựng hệ thống


thu thập nhật ký, số liệu và phương thức theo dõi hệ thống.
Phần bảy: Kết quả và đánh giá hệ thống. Kết quả thử nghiệm và đánh giá hệ
thống thông qua các ứng dụng được triển khai trên hệ thống.
Phần tám: Tổng kết và hướng phát triển. Khái quát nội dung, ý nghĩa của hệ
thống, và hướng phát triển cho luân văn sắp tới.

i


Mục lục
Tóm tắt luận văn

i

Danh sách hình vẽ

iv

Thuật ngữ và từ viết tắt

vi

1

Mở đầu
1.1 Giới thiệu đề tài . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2 Mục tiêu đề tài . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1
1

2

2

Tổng quan
2.1 Giới thiệu dữ liệu mở . . . . . . . . . . . . . . . . . .
2.2 Ứng dụng về dữ liệu và dữ liệu mở . . . . . . . . . . .
2.3 Tính năng triển khai ứng dụng trên nền tảng dữ liệu mở
2.4 Tính năng chia sẻ ứng dụng trên nền tảng dữ liệu mở .
2.5 Hệ thống quản lý dữ liệu CKAN . . . . . . . . . . . .
2.6 Thực thi ứng dụng do người dùng cung cấp . . . . . .
2.7 Quản lý và theo dõi hệ thống . . . . . . . . . . . . . .

.
.
.
.
.
.
.

4
4
5
7
9
9
12
29


3

Kiến trúc hệ thống
3.1 Kiến trúc tổng thể . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2 Kiến trúc phân rã . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.3 Thiết kế cơ sở dữ liệu . . . . . . . . . . . . . . . . . . . . . . . . . . .

34
34
36
41

4

Tích hợp tính năng triển khai và chia sẻ ứng dụng trên CKAN
4.1 Thiết kế phần mở rộng trên CKAN . . . . . . . . . . . . . .
4.2 Chức vụ và quyền hạn liên quan đến triển khai ứng dụng . .
4.3 Chức vụ và quyền hạn liên quan đến chia sẻ ứng dụng . . . .
4.4 Chức vụ và quyền hạn liên quan đến quản lý hệ thống . . . .

43
43
60
65
67

ii

.
.

.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.


.
.
.
.

.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.

.
.
.
.


.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.

.
.
.
.

.
.
.

.


4.5
4.6
5

6

Các tính năng trên cổng thơng tin dữ liệu mở liên quan đến triển khai và
chia sẻ ứng dụng . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
API trong triển khai và sử dụng ứng dụng . . . . . . . . . . . . . . . .

Hệ thống xây dựng và thực thi ứng dụng
5.1 Phân tích vấn đề . . . . . . . . . . . .
5.2 Thiết kế hệ thống . . . . . . . . . . .
5.3 Ghi dữ liệu đầu ra của ứng dụng . . .
5.4 Hiện thực hệ thống . . . . . . . . . .

.
.
.
.

.
.
.
.

.

.
.
.

Quản lý nhật ký, thống kê và theo dõi hệ thống
6.1 Giới thiệu chung . . . . . . . . . . . . . .
6.2 Thành phần . . . . . . . . . . . . . . . . .
6.3 Định dạng log được ghi . . . . . . . . . . .
6.4 Quy trình . . . . . . . . . . . . . . . . . .
6.5 Tính năng . . . . . . . . . . . . . . . . . .

.
.
.
.

.
.
.
.
.

.
.
.
.

.
.
.

.
.

.
.
.
.

.
.
.
.
.

.
.
.
.

.
.
.
.
.

.
.
.
.


.
.
.
.
.

.
.
.
.

.
.
.
.
.

.
.
.
.

.
.
.
.
.

.
.

.
.

.
.
.
.
.

.
.
.
.

.
.
.
.
.

.
.
.
.

.
.
.
.
.


.
.
.
.

.
.
.
.
.

.
.
.
.

.
.
.
.
.

.
.
.
.

.
.

.
.
.

.
.
.
.

.
.
.
.
.

68
84

.
.
.
.

87
87
91
94
96

.

.
.
.
.

99
99
100
100
101
103

7

Kết quả và đánh giá hệ thống
107
7.1 Kết quả . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
7.2 Đánh giá . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
7.3 So sánh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109

8

Tổng kết và hướng phát triển đề tài
8.1 Tổng kết . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8.2 Khó khăn và hạn chế . . . . . . . . . . . . . . . . . . . . . . . . . . .
8.3 Hướng phát triển . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Tài liệu tham khảo

114

114
115
115
116


Danh sách hình vẽ
2.1
2.2
2.3
2.4
2.5
2.6

Kiến trúc code CKAN1 . . . . . . . . . . . .
Logo Docker . . . . . . . . . . . . . . . . .
Kiến trúc Docker Engine [11] . . . . . . . . .
Các tầng của Docker image và container [19]
Logo AppArmor . . . . . . . . . . . . . . .
Cơ chế hoạt động của ELK . . . . . . . . . .

.
.
.
.
.
.

.
.

.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.

.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.


.
.
.
.
.
.

11
14
14
25
27
31

3.1
3.2
3.3
3.4
3.5
3.6
3.7
3.8
3.9
3.10
3.11
3.12

Kiến trúc phân lớp của hệ thống . . . . . . . . . . .
Minh họa kiến trúc hệ thống . . . . . . . . . . . . .

Bản vẽ chuỗi: Tạo một ứng dụng . . . . . . . . . . .
Bản vẽ chuỗi: Tạo một dự án . . . . . . . . . . . . .
Bản vẽ chuỗi: Tìm kiếm ứng dụng hoặc dự án . . . .
Bản vẽ chuỗi: Đọc một ứng dụng, dự án hoặc lần gọi
Bản vẽ chuỗi: Tạo cuộc gọi ứng dụng . . . . . . . . .
Bản vẽ chuỗi: Tùy chỉnh ứng dụng hoặc dự án . . . .
Bản vẽ chuỗi: Thu thập nhật ký hệ thống và ứng dụng
Bản vẽ chuỗi: Tạo trang quản lý nhật ký . . . . . . .
Bản vẽ chuỗi: Tạo trang quản lý nhật ký . . . . . . .
Biểu đồ ER . . . . . . . . . . . . . . . . . . . . . .

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

34
36
36
37
37
38
39
39
40

40
41
42

4.1
4.2
4.3
4.4
4.5
4.6
4.7
4.8
4.9
4.10
4.11
4.12

Giao diện thành viên của một tổ chức . . . . . . . . . . . . . . . . . .
Giao diện bổ nhiệm nhân sự . . . . . . . . . . . . . . . . . . . . . . .
Bản vẽ use case về triển khai và thực thi ứng dụng . . . . . . . . . . . .
Chi tiết quyền hạn cho từng chức vụ trong chế độ STOP của ứng dụng .
Chi tiết quyền hạn cho từng chức vụ trong chế độ DEBUG của ứng dụng
Chi tiết quyền hạn cho từng chức vụ trong chế độ START của ứng dụng
Bản vẽ use case về chia sẻ ứng dụng ứng dụng . . . . . . . . . . . . . .
Bản vẽ use case về quản lý hệ thống . . . . . . . . . . . . . . . . . . .
Tạo một ứng dụng trên CKAN bước một . . . . . . . . . . . . . . . . .
Tạo một ứng dụng trên CKAN bước hai . . . . . . . . . . . . . . . . .
Tạo một ứng dụng trên CKAN bước ba . . . . . . . . . . . . . . . . . .
Tìm kiếm ứng dụng . . . . . . . . . . . . . . . . . . . . . . . . . . . .


60
61
62
63
63
63
66
67
69
69
70
71

iv

.
.
.
.
.
.

.
.
.
.
.
.

.

.
.
.
.
.


4.13
4.14
4.15
4.16
4.17
4.18
4.19
4.20
4.21
4.22
4.23
4.24
4.25
4.26
4.27
4.28
4.29
4.30
4.31
4.32

Xem thông tin và thực thi ứng dụng .
Xem thông tin và thực thi ứng dụng .

Danh sách kết quả lần gọi theo cá nhân
Kết quả lần gọi . . . . . . . . . . . .
Xem báo cáo và chú thích . . . . . . .
Quản lý mã nguồn . . . . . . . . . . .
Nhật ký ứng dụng . . . . . . . . . . .
Thống kê lần gọi . . . . . . . . . . .
Tùy chỉnh ứng dụng . . . . . . . . . .
Tìm kiếm bài viết . . . . . . . . . . .
Đọc bài viết . . . . . . . . . . . . . .
Tạo bài viết trên CKAN bước một . .
Tạo bài viết trên CKAN bước hai . . .
Tạo bài viết trên CKAN bước ba . . .
Quản lý ứng dụng . . . . . . . . . . .
Quản lý bài viết . . . . . . . . . . . .
Quản lý nhật ký hệ thống . . . . . . .
Quản lý tài nguyên hệ thống . . . . .
Quản lý tài nguyên hệ thống . . . . .
Ứng dụng VNCOVID . . . . . . . . .

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.


.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.


.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.

72
72
73
73
74
75
76
77
77
78
79
80
81
81
82
82
83
83
84
86


Danh sách bảng

2.1

Các định nghĩa về dữ liệu mở . . . . . . . . . . . . . . . . . . . . . . .

4

5.1

Các kiểu tham số . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

94

5.2

Các kiểu dữ liệu đầu ra . . . . . . . . . . . . . . . . . . . . . . . . . .

95

7.1

Kết quả triển khai trên hai ứng dụng . . . . . . . . . . . . . . . . . . . 108

7.2

Kết quả thực thi trên hai ứng dụng . . . . . . . . . . . . . . . . . . . . 108

7.3

Khả năng đáp ứng tối đa . . . . . . . . . . . . . . . . . . . . . . . . . 109


7.4

Đặc điểm giữa triển khai ứng dụng trên nền tảng containerization và triển
khai ứng dụng trên máy chủ vật lý không sử dụng nền tảng containerization110

vi


Thuật ngữ và từ viết tắt
CSDL
Cơ sở dữ liệu
Portal
Cổng thông tin
Search engine Cơng cụ tìm kiếm

vii


Chương 1

Mở đầu
1.1

Giới thiệu đề tài
Hiện nay dữ liệu đang là một động lực mạnh mẽ cho mọi lĩnh lực trong đời sống.

Trong nền kinh tế , dữ liệu là nguồn tài nguyên đem đến cho doanh nghiệp một công cụ
để theo dõi thị trường và hiểu rõ hơn về khách hàng của họ. Trong nghiên cứu khoa học,
dữ liệu là nguồn đầu vào cho AI, data mining,... là tiền đề cho sự phát hiện những tri
thức mới. Vì mục đích cộng đồng, có rất nhiều nguồn dữ liệu được các đơn vị tổ chức, cá

nhân công khai và từ đó tạo ra một mối liên hệ giữa người chia sẻ dữ liệu và người cần
dữ liệu. Nhu cầu thực tế đặt ra một vấn đề là làm cách nào để chia sẻ dữ liệu, tiếp cận
những dữ liệu và làm sao để sử dụng một cách hiệu quả. Để giải quyết vấn đề ấy, nhiều
quốc gia trên thế giới đã sử dụng nền tảng cổng thông tin dữ liệu mở để lưu trữ, chia sẻ
dữ liệu và song song đó là phương thức để truy cập đến dữ liệu đó.
Tuy nhiên có một khuyết điểm mà những nền tảng hiện có đó là tập người dùng nhỏ
và dữ liệu chưa thể hiện được tính ứng dụng của nó. Điều này làm cho những nền tảng
dữ liệu mở trở nên giống với một nơi để lưu trữ dữ liệu hơn là giá trị cốt lõi là mang
lại lợi ích cho cộng đồng. Về tập người dùng, người dùng của nền tảng này là nhà cung
cấp dữ liệu, những người hiểu về dữ liệu, những nhà phát triển và những nhà khoa học.
Chính vì thế muốn mang dữ liệu đến với những người dùng khơng có kiến thức về dữ
liệu hoặc cơng nghệ hoặc những nhà lập trình bên ngồi hệ thống, nhóm tác giả đã phát

1


Chương 1 Mở đầu

triển một tính năng bổ sung trên nền tảng dữ liệu mở đó là tính năng triển khai và chia
sẻ ứng dụng.
Hệ thống này cho phép lưu trữ ứng dụng với số lượng lớn trong khi vẫn đảm bảo
đáp ứng yêu cầu của người dùng tại mọi thời điểm như là một dịch vụ. Hệ thống cung
cấp công cụ, bộ quy tắc và phương pháp triển khai ứng dụng. Hệ thống cho phép chính
tổ chức triển khai ứng dụng mở, các cá nhân và tổ chức khác tham gia triển khai ứng
dụng. Tính năng này phù hợp cho các cá nhân, tổ chức có ý tưởng ứng dụng về dữ liệu
nhưng không thể triển khai độc lập vì lý do chủ quan hay khách quan hoặc đơn giản là
muốn chia sẻ cho cộng đồng. Đối với những ứng dụng đã triển khai bên ngồi vẫn có thể
chia sẻ đến với cộng đồng bằng cách đăng bài viết về dự án ứng dụng, bài viết này mô tả
một dự án có liên quan đến dữ liệu và ứng dụng chủ đạo từ dữ liệu đó.
Đây là một hướng đi mới đối với các hệ thống dữ liệu mở từng có. Sáng kiến triển

khai và chia sẻ ứng dụng trên hệ thống dữ liệu mở hứa hẹn sẽ là bước ngoặt thúc đẩy
sáng kiến dữ liệu và sự quan tâm về dữ liệu của cá nhân, tổ chức và chính phủ.

1.2

Mục tiêu đề tài
Mục tiêu của đề tài là phát triển thêm tính năng liên quan đến triển khai và chia sẻ

ứng dụng dựa vào một nền tảng dữ liệu mở có sẵn. Hệ thống cho phép nhà lập trình hay
chính nhà triển khai hệ thống này tận dụng nguồn dữ liệu phong phú, đa dạng, độ tin
cậy cao và dễ dàng tiếp cận trên hệ thống dữ liệu mở để tạo ra những ứng dụng có tính
thiết thực với đời sống xã hội, tạo ra những sáng kiến dữ liệu mới và tri thức mới. Với
khả năng ấy, mục tiêu của hệ thống không những là nơi tập trung về dữ liệu mà còn là
nơi tập trung về ứng dụng liên quan đến dữ liệu, cụ thể mục tiêu của hệ thống bao gồm
những thành phần sau đây:
• Cổng thơng tin dữ liệu mở có tích hợp tính năng triển khai và chia sẻ ứng dụng

thông qua giao diện web.
• Máy chủ ứng dụng cho phép xây dựng ảnh docker và thực thi ứng dụng.
• Cơng cụ giám sát ứng dụng cho người quản trị hệ thống và công cụ theo dõi nhật

ký và thống kê cho người quản trị và chủ sở hữu ứng dụng.

2


Chương 1 Mở đầu

• Bộ API liên quan đến triển khai và thực thi ứng dụng cho phép gọi từ các hệ thống


khác.

3


Chương 2

Tổng quan
2.1

Giới thiệu dữ liệu mở
Định nghĩa về dữ liệu mở là khác nhau giữa các tổ chức. Bảng 2.1 trình bày một số

định nghĩa về dữ liệu mở của các tổ chức và các nhà nghiên cứu trên toàn cầu. Các định
nghĩa này được sử dụng bởi các nhà cung cấp dữ liệu mở, các nhà nghiên cứu và người
ủng hộ dữ liệu mở.
Tổ chức
Định nghĩa
Open Data Foundation Dữ liệu mở là dữ liệu có thể được sử dụng, tái sử dụng và
phân phối lại một cách tự do bởi bất kỳ ai [1]
Open Data Institute
Dữ liệu mở là dữ liệu mà bất kỳ ai cũng có thể truy cập, sử
dụng và chia sẻ[2]
White House
Dữ liệu mở đề cập đến dữ liệu có sẵn và cơng khai, nó được
cấu trúc theo cách cho phép dữ liệu được người dùng cuối có
thể khám phá và sử dụng đầy đủ[3]
Bảng 2.1: Các định nghĩa về dữ liệu mở

Dữ liệu mở có tác động tích cực đến mọi mặt của đời sống, kinh tế, xã hội. Một số tác

động tích cực được nghiên cứu và tổng hợp trong bài nghiên cứu "The Economic Impact
of Open Data: Opportunities for value creation in Europe"[4] bởi Esther Huyer và Laura
van Knippenberg:

4


Chương 2 Tổng quan

• Dữ liệu mở giúp cứu lấy nhiều mạng sống hơn: Visualize No Malaria một công cụ

sử dụng sử dụng dữ liệu mở và phân tích vị trí đã góp phần đẩy lùi bệnh sốt rét, họ
lập ra bản đồ về những nơi chịu ảnh hưởng của bệnh sốt rét từ đó thay đổi cách nhìn
nhận của địa phương về cách phân bổ những nhu yếu phẩm và lực lượng y tế phù
hợp với từng địa bàn. Dữ liệu mở giúp cải thiện các dịch vụ khẩn cấp bằng cách tìm
kiếm những địa điểm xảy ra tai nạn một cách nhanh chóng, từ đó cứu sống nhiều
mạng sống hơn thông qua dữ liệu mở về các số điện thoại khẩn cấp về y tế, dữ liệu
mở về bản đồ và giao thơng thời gian thực.
• Dữ liệu mở giúp tiết kiệm thời gian: Dữ liệu về phương tiện giao thông công cộng

bao gồm các tuyến đường, lịch trình,... có thể được chia sẻ để tạo nên dữ liệu mở.
Dữ liệu này có thể giúp cho hàng khách có thể đưa ra quyết trình trong việc sắp
xếp lịch trình giảm thời gian chờ đợi khi tham gia giao thơng bằng các phương tiện
cơng cộng. Ngồi ra dữ liệu mở về mật độ giao thông giúp cho việc điều tiết giao
thơng được tốt hơn.
• Dữ liệu mở bảo vệ môi trường: Nhờ dữ liệu mở về môi trường như lượng CO2 tồn

cầu, dữ liệu về ơ nhiễm mơi trường,... những bản thống kê báo cáo về môi trường
được tạo ra nhằm phổ cập kiến thức về tác động của con người về mơi trường từ đó
đưa ra những cảnh báo và đề nghị cho mỗi cá nhân đối với mơi trường sống.

• Dữ liệu mở giúp giảm bớt chi phí: từ những ví dụ trên có thể suy ra được rằng dữ

liệu giúp giảm chi phí chăm sóc sức khỏe và các dịch vụ khẩn cấp, giảm chi phí
vì thời gian bỏ ra khi tham gia giao thông được rút ngắn lại và giảm chi phí vì các
hoạt động khắc phục hậu quả của việc ô nhiễm môi trường và biến đổi khí hậu.

2.2

Ứng dụng về dữ liệu và dữ liệu mở
Ứng dụng là thành quả của quá trình khai thác dữ liệu, ứng dụng mang đến những

giá trị thiết thực cho người dùng như giúp họ hiểu hơn về dữ liệu, giải quyết một vấn đề
nào đó trong đời sống xã hội,... ứng dụng có tính thực tế cao vì nó trực quan và dễ tiếp
cận đến những người dùng khơng có kiến thức về dữ liệu và cơng nghệ.
Dữ liệu nói chung và dữ liệu mở nói riêng là nguồn đầu vào, là cơ sở cho sự hình
thành và phát triển của nhiều ứng dụng về dữ liệu đem đến những lợi ích thiết thực cho
cuộc sống xã hội. Tuy nhiên, chất lượng của dữ liệu là vấn đề quan trọng nhất quyết định
5


Chương 2 Tổng quan

đến sự hoạt động đúng đắn của ứng dụng. Những dự án về dữ liệu mở, cổng thông tin
dữ liệu mở mà đa phần từ các tổ chức chính phủ ra đời đã đem đến nguồn dữ liệu có độ
tin cậy cao, chất lượng cao và minh bạch tạo đà cho sự bùng nổ của những ứng dụng có
tính thiết thực với độ chính xác cao. Một số ứng dụng có sử dụng dữ liệu mở hay có liên
quan đến dữ liệu tiêu biểu như:
• OpenTraffic[5] là một nền tảng dữ liệu toàn cầu để xử lý các vị trí ẩn danh của

phương tiện và điện thoại thông minh thành thống kê giao thông lịch sử và thời

gian thực.
• Visualize No Malaria[6] là cơng cụ sử dụng dữ liệu mở và phân tích vị trí để xác

định lập ra bản đồ về sốt rét ở châu Phi.
• Commutable Careers [7] là ứng dụng cung cấp thông tin về việc làm dựa vào vị trí

địa lý. Chỉ cần cung cấp mã bưu chính ứng dụng sẽ trả về những cơng việc đang
trống gần nhất mà dễ dàng có thể đến được thơng qua phương tiện cơng cộng.
• ARXaaS - Anonymization as a Service[8] là công cụ ẩn danh hóa dữ liệu sử dụng

thư viện ARX.
• VNCOVID - Ứng dụng xem thông tin các ca nhiễm virus Covid-19 tại Việt Nam

do nhóm tác giả thực hiện.
Có hai loại ứng dụng được nhóm phân loại theo chức năng được phép triển khai trên
hệ thống này là:
• Ứng dụng sử dụng nguồn dữ liệu trên hệ thống: đây là loại ứng dụng sử dụng trực

tiếp từ nguồn dữ liệu phong phú trên hệ thống dữ liệu mở nhờ đó có thể truy cập
nhanh chóng đến dữ liệu và đảm bảo dữ liệu luôn là mới nhất. Những ứng dụng
này thương nhằm mục đích giúp người dùng hiểu hơn về dữ liệu thông qua việc
truy xuất dữ liệu, thay đổi chúng thành những dạng thân thiện với người dùng bình
thường bằng các cơng cụ phổ b iến như biểu đồ, hình ảnh, văn bản, bản đồ,...
• Ứng dụng khơng sử dụng dữ liệu nhưng có liên quan đến dữ liệu: đây là loại ứng

dụng sử dụng kết quả từ quá trình khai thác dữ liệu như train model AI,... hoặc thuật
toán về dữ liệu như ẩn danh hóa dữ liệu, chuyển đổi dữ liệu,... nhằm tạo ra nguồn
đầu ra có giá trị, ý nghĩa và tính ứng dụng đời sống.
Có hai loại ứng dụng được nhóm phân loại theo tổ chức được phép triển khai trên
hệ thống này là:

6


Chương 2 Tổng quan

• Ứng dụng nội bộ: đây là ứng dụng do chính nhà triển khai hệ thống phát triển và

công khai với người dùng như là một ứng dụng đặc trưng của hệ thống.
• Ứng dụng tổ chức: hệ thống cho phép những tổ chức được hệ thống công nhận triển

khai lên hệ thống.
Ứng dụng được hỗ trợ API cho phép thực thi từ một trang web hoặc một hệ thống
khác. Điều đó có nghĩa là ứng dụng có thể chia sẻ ra ngồi phạm vi hệ thống và vì thế
tăng độ phổ biến cho ứng dụng và cả dữ liệu sử dụng. Ngồi ra hệ thống cịn có tính năng
đăng bài viết về ứng dụng, đây là những bài viết chia sẻ những dự án ứng dụng của các
nhóm nghiên cứu khoa học.

2.3

Tính năng triển khai ứng dụng trên nền tảng dữ liệu
mở

2.3.1

Giới thiệu chung

Tính năng triển khai ứng dụng là tính năng nhóm tác giả phát triển thêm dựa vào
nền tảng dữ liệu mở nói chung và CKAN nói riêng. Tính năng cho phép lưu trữ ứng dụng
với số lượng lớn trên tảng dữ liệu mở và sử dụng hiệu quả nguồn tài ngun tính tốn khi
thực thi ứng dụng do chỉ sử dụng tài nguyên mỗi khi có u cầu thực thi nhờ vào cơng

nghệ containerization. Với công nghệ này, hệ thống cho phép ứng dụng luôn khả thực thi
như một dịch vụ mà không mất chi phí duy trì ứng dụng đó.
Tính năng này cho phép nhà triển khai dữ liệu mở cũng như cho phép cá nhân, tổ
chức tham gia và phối hợp với nhà triển khai dữ liệu mở cung cấp những ứng dụng đặc
thù đến cộng đồng.

2.3.2

Giới thiệu về môi trường triển khai

Hệ thống chia làm hai môi trường triển khai ứng dụng:
• Mơi trường thử nghiệm: Là các máy chủ dùng để thực thi ứng dụng đang trong giai

đoạn thử nghiệm.
7


Chương 2 Tổng quan

• Mơi trường sản phẩm: Là các máy chủ thực thi ứng dụng đã hoàn thành giai đoạn

thử nghiệm, trở thành 1 sản phẩm hoàn chỉnh và có thể cơng khai cho cộng đồng.
Lý do tách biệt hai mơi trường là vì mơi trường thử nghiệm cho phép các sự cố có thể
xảy ra và vì thế cần tránh ảnh hướng đến sự thực thi của những ứng dụng sản phẩm ví dụ
như chiếm dụng quá nhiều tài nguyên, gây lỗi hệ thống,...

2.3.3

Giới thiệu về quy trình triển khai ứng dụng


Ứng dụng của nhà triển khai dữ liệu mở hoặc cá nhân, tổ chức phối hợp với nhà
triển khai dữ liệu mở trải qua ba bước đến trở thành sản phẩm được triển khai trên nền
tảng dữ liệu mở gồm có:
• Hiện thực ứng dụng: là giai đoạn các nhà lập trình viên viết mã nguồn cho ứng

dụng, sử dụng thư viện do hệ thống cung cấp để tích hợp vào hệ thống.
• Thử nghiệm ứng dụng: là giai đoạn ứng dụng đã được triển khai trên hệ thống và

có thể thực thi trên mơi trường thử nghiệm. Trong giai đoạn này chỉ có nhà quản trị,
nhà phát triển và người kiểm thử có quyền thực thi ứng dụng để kiểm tra lỗi trước
khi công khai với người dùng. Họ đóng vai trị đảm bảo ứng dụng có thể thực thi
tốt trong mơi trường sản phẩm.
• Đưa ứng dụng lên môi trường sản phẩm: Là giai đoạn ứng dụng được đưa lên hệ

thống một cách công khai cho người dùng.

2.3.4

Giới thiệu các chế độ của ứng dụng trong hệ thống

Có ba chế độ của một ứng dụng trong hệ thống:
• STOP: ở chế độ này ứng dụng ngừng phục vụ đến người dùng. Ứng dụng được bật

chế độ này có thể do gây ra lỗi, vi phạm bản quyền,...
• DEBUG: khi ứng dụng được đăng ký thành công, chế độ này sẽ được bật, nghĩa là

với ứng dụng đang trong mơi trường thử nghiệm.
• START: ở chế độ này ứng dụng được công khai với tất cả người dùng và luôn trong

trạng thái sẵn sàng hoạt động, nghĩa là với ứng dụng đang trong môi trường sản

phẩm.
8


Chương 2 Tổng quan

2.4

Tính năng chia sẻ ứng dụng trên nền tảng dữ liệu
mở

2.4.1

Giới thiệu chung

Hệ thống cung cấp tính năng chia sẻ ứng dụng cho phép ứng dụng bên ngồi nhưng
có sử dụng dữ liệu mở từ hệ thống và những ứng dụng không sử dụng dữ liệu mở từ hệ
thống nhưng muốn giới thiệu và chia sẻ đến cộng đồng thông qua dự án ứng dụng.
Dự án ứng dụng là bài viết về dự án do cá nhân, tổ chức hoặc nhóm nghiên cứu hiện
thực bên ngồi hệ thống có nhu cầu chia sẻ về dự án đó, bao gồm các thông tin sau: tác
giả, chủ đề, nội dung bài viết, tập dữ liệu sử dụng, ứng dụng chủ đạo.

2.5

Hệ thống quản lý dữ liệu CKAN

2.5.1

Giới thiệu


CKAN (Comprehensive Knowledge Archive Network) là một hệ thống nguồn mở
dùng để quản lý, lưu trữ và phân phối dữ liệu mở. CKAN đã phát triển thành một hệ
thống danh mục dữ liệu mạnh mẽ, chủ yếu được sử dụng bởi các tổ chức cơng cộng đang
tìm cách chia sẻ dữ liệu của họ với công chúng.
Hiện nay CKAN đang được sử dụng rộng rãi trên nhiều quốc gia, trong đó chủ yếu
là có tổ chức từ chính phủ đồng thời cộng CKAN được cộng đồng đánh giá rất cao về
những khả năng của nó trong việc tổ chức dữ liệu, khả năng mở rộng và khả năng tương
thích với các hệ thống khác.
Các phiên bản phát hành của CKAN được phối hợp, thử nghiệm và triển khai bởi
đội ngũ công nghệ làm việc lâu năm trong lĩnh vực dữ liệu mở.
Là một dự án nguồn mở, CKAN và các phần mở rộng của nó được phát triển bởi
một cộng đồng lớn.

9


Chương 2 Tổng quan

2.5.1.1

Các tính năng của CKAN

Một vài tính năng cơ bản của CKAN:
• CKAN có đầy đủ các chức năng và giải giáp để quản lý dữ liệu mở thơng qua open

portal.
• CKAN cung cấp một cách hợp lý các công cụ để làm cho dữ liệu của người dùng

có thể dễ dàng khám phá và trình bày. Mỗi tập dữ liệu được cung cấp trang riêng
để liệt kê tài nguyên dữ liệu và bộ sưu tập siêu dữ liệu phong phú, làm cho nó trở

thành một danh mục dữ liệu có giá trị và dễ dàng tìm kiếm.
• Chức năng cốt lõi của CKAN cung cấp nhiều tính năng và có hơn 200 tiện ích mở

rộng cộng đồng có thể lấp đầy hầu hết mọi khoảng trống tính năng.
CKAN có một số ưu điểm như sau:
• Mã nguồn mở, cộng đồng lớn và có nguồn tính năng mở rộng phong phú.
• Có khả năng lưu trữ dữ liệu lớn, dữ liệu streaming, dữ liệu có cấu trúc lẫn khơng có

cấu trúc với nhiều nhiều định dạng phong phú.
• Tìm kiếm dữ liệu đơn giản và hiệu quả nhờ search engine và metadata.
• Có khả năng mở rộng và tích hợp với các hệ thống khác.
• Quản lý dữ liệu và người dùng thông hệ thống quyền truy cập.

Khác với những nền tảng khác, CKAN là nguồn mở, vì vậy nó miễn phí và có tính
linh hoạt cao, cho phép tự do điều chỉnh mã nguồn nếu cần. Nó cũng nổi bật với các tính
năng phong phú cho nhà xuất bản và người dùng dữ liệu, chẳng hạn như thu thập dữ liệu,
tìm kiếm theo đặc điểm và theo từng loại thiết bị; CKAN còn cho phép bạn chia sẻ dữ
liệu cơng khai của mình với các trang web CKAN khác.

2.5.1.2

Cơng nghệ CKAN sử dụng

Phía backend của CKAN, phần chạy trên máy chủ web, được viết chủ yếu bằng
Python. Các trang web cung cấp cho trình duyệt người dùng bao gồm JavaScript. CKAN
quản lý thông tin về các bộ dữ liệu sẽ được cung cấp cho người dùng trong cơ sở dữ liệu
PostgreSQL. Tìm kiếm được thực hiện bởi Solr.

10



Chương 2 Tổng quan

2.5.2

Kiến trúc hệ thống CKAN

CKAN được tổ chức theo mơ hình phát triển từ mơ hình MVC (Model-ViewController):

Hình 2.1: Kiến trúc code CKAN1

• Routes: Route định nghĩa các đường dẫn URL và view, chúng sẽ có nhiệm vụ xử

lý yêu cầu và phản hồi đến user.
• Views: Views dùng để xử lý request từ user, module này sẽ đọc và cập nhật dữ liệu

thông qua các action và trả về cho người dùng html được render bởi Jinja2 template.
Jinja2 là một template engine hỗ trợ trên ngôn ngữ Python. Jinja2 đơn giản, dễ sử
dụng và có cộng đồng lớn. Bên cạnh đó cịn có nhiều biến thế khác như sử dụng
CMS thay thế hoặc sử dụng song song giữa CMS và DMS.

1 />
11


Chương 2 Tổng quan

• Logic: Logic bao gồm action functions, auth functions, background tasks and business

logic. Phần logic là phần module giúp cho CKAN thích ứng với tùy điều kiện và

đặc điểm của các tổ chức khác nhau.Thông qua interfaces.IActions người dùng có
thể thêm các actions vào hệ thống. Những action được khai báo trong CKAN có thể
được gọi thơng qua RESTful API hoặc người dùng có thể gọi th ơng qua ckanapi
module.
• Model: Vì CKAN sử dụng Postgresql cho nên framework phù hợp nhất với database

này là SQLAlchemy. Các thực thể trong CKAN được tổ chức theo dạng class các
model và thao tác với database thông qua session, điều này sẽ giúp cho hệ thống
kiểm sốt dịng lệnh được tốt hơn.

2.6

Thực thi ứng dụng do người dùng cung cấp
Hệ thống ứng dụng CKAN có điểm cơ bản khá giống với các nền tảng Platform

as a Service như Heroku, AWS (Amazon web Services), Google App-Engine. Các nền
tảng này cho phép triển khai lên server của họ các ứng dụng của người dùng, thường là
web server, API server. Các ứng dụng này thậm chí cịn khơng thơng qua kiểm duyệt mà
trực tiếp được thực thi. Các bên cung cấp dịch vụ cloud đều phải xét đến trường hợp ứng
dụng của người dùng có thể gây hại cho server của họ.
Có nhiều hướng xử lý vấn đề thực thi các chương trình khơng tin cậy:
• Lý tưởng nhất là dùng một mơi trường vật lý riêng biệt để thực thi ứng dụng. Nếu

có vấn đề xảy ra, chỉ mơi trường đó bị ảnh hưởng. Tuy nhiên, lượng tài nguyên cần
dùng là quá nhiều (server vật lý riêng), khiến cách này không khả thi.
• Dùng các sandbox đặc biệt để thực thi chương trình khơng tin tưởng. Chẳng hạn

như khi dùng Java SecurityManager, có thể giới hạn truy cập tới các tài nguyên
(thread, socket, file, subprocess, ...) tùy theo yêu cầu về bảo mật. Cách này phụ
thuộc nhiều vào việc ngôn ngữ lập trình có sandbox ổn định và dùng được hay

khơng.
• Dùng máy ảo để cô lập môi trường thực thi ứng dụng.
• Dùng container để cơ lập mơi trường thực thi ứng dụng.

12


Chương 2 Tổng quan

Ngày nay, các nền tảng PaaS được hiện thực theo 2 cơng nghệ ảo hóa chính là máy
ảo và container. Máy ảo được dùng để ảo hóa tầng vật lý, giúp nhiều hệ thống độc lập có
thể cùng hoạt động trên một máy chủ vật lý; tài nguyên được cấp cho các máy ảo độc lập
với nhau. Container cung cấp dạng ảo hóa nhẹ hơn, dùng ít tài nguyên hơn và thời gian
khởi động ngắn hơn. Container sử dụng các nguyên lý ảo hóa ở tầng hệ điều hành thay
vì tầng vật lý như máy ảo.
Mỗi nền tảng PaaS lại sử dụng công nghệ container riêng của mình, như Google
App Engine dùng gVisor [9], AWS Lambda dùng Firecracker [10].
Mặt khác, hệ thống ứng dụng CKAN có nhiều mặt khác so với các nền tảng PaaS:
• Ứng dụng là dạng chương trình thực thi trong thời gian ngắn, không phải dạng dịch

vụ (như web server), cần thời gian khởi động nhanh.
• Ứng dụng được cung cấp bởi các tổ chức được cấp phép, không phải người dùng

nào cũng có thể tạo ra ứng dụng lên hệ thống.
• Ứng dụng được kiểm duyệt trước khi đưa vào sử dụng.

Do đó, hệ thống ứng dụng CKAN sử dụng các cơng nghệ container đơn giản hơn
và không yêu cầu quá phức tạp về mặt bảo mật. Loại container được dùng trong luận văn
này là Docker container.


2.6.1

Giới thiệu về Docker

Docker là một nền tảng cho phép đóng gói ứng dụng và thực thi chúng trong những
môi trường cô lập với host gọi là container. Ứng dụng được đóng gói có thể dễ dàng
chuyển giao và thực thi trên nhiều server khác nhau. Docker sử dụng nhiều tính năng của
kernel Linux cho phép cô lập, giới hạn tài nguyên các ứng dụng. Docker rất phù hợp cho
hệ thống ứng dụng CKAN.

13


Chương 2 Tổng quan

Hình 2.2: Logo Docker

2.6.2

Kiến trúc Docker Engine

Hình 2.3: Kiến trúc Docker Engine [11]

Docker Engine sử dụng kiến trúc client-server. Server là một process daemon, làm
mọi công việc cần thiết là client yêu cầu như xây dựng Docker image hay thực thi
container cho một ứng dụng nào đó. Docker daemon sử dụng nhiều thư viện và tính
năng trong kernel Linux để thực hiện những chức năng nền tảng Docker muốn cung cấp
[11].
Khi đóng gói ứng dụng, ứng dụng và tồn bộ mơi trường cần thiết để thực thi ứng
dụng, bao gồm chương trình thực thi ứng dụng (như trình thơng dịch của Python, máy ảo

của Java), các thư viện cần thiết của ngôn ngữ, các file mã nguồn, config, dữ liệu, hình
ảnh,... được gom thành một đơn vị gọi là Docker image (ảnh Docker). Docker image cô
lập ứng dụng với host. Chuyển Docker image tới một server khác và ứng dụng sẽ thực
thi bình thường.

14


Chương 2 Tổng quan

Khi thực thi, Docker daemon sẽ dùng image của ứng dụng tạo ra môi trường cô
lập và thực thi ứng dụng trong mơi trường đó. Thực chất container chỉ là một nhóm
các process (các process thực thi trong container) thuộc về một nhóm các namespace và
cgroup độc lập. Trong đó, namespace dùng để giới hạn phần hệ thống mà ứng dụng có
thể truy cập và cgroup dùng để giới hạn tài nguyên.

2.6.3

Điểm mạnh của Docker container

• Sử dụng tài nguyên hiệu quả. Docker container chỉ chứa đúng những gì ứng dụng

cần để thực thi. Ứng dụng khi thực thi chỉ là một (hoặc nhiều) process trong hệ
thống, tài nguyên tiêu tốn chênh lệch tương đương với chính ứng dụng đó khi
chạy trực tiếp trên hệ thống. Việc tạo ra container để thực thi ứng dụng và loại
bỏ container khi ứng dụng kết thúc tốn thời gian và tài nguyên nhiều hơn so với
process thông thường nhưng không hơn quá nhiều.
• Chia sẻ tài nguyên dễ dàng. Các container khi thực thi sẽ cô lập với nhau. Điều này

cho phép nhiều container cùng thực thi và chia sẻ tài ngun hệ thống mà khơng

ảnh hưởng lẫn nhau.
• Container có thể thực thi dễ dàng trên nhiều mỗi trường khác nhau. Docker Engine

có thể cài đặt trên bất kỳ phần cứng, trên hệ điều hành Linux thông thường hoặc hệ
điều hành Linux trên máy ảo hoặc cloud [11]. Ứng dụng nếu tương thích với phiên
bản kernel Linux nơi Docker được cài đặt thì có thể thực thi bằng các lệnh cơ bản
của Docker mà không cần cài đặt thêm gì cho ứng dụng.

2.6.4

Docker với hệ thống ứng dụng CKAN

Các vấn đề của bài toán xây dựng và thực thi ứng dụng có thể giải quyết bằng
Docker:
• Cài đặt nhiều ngơn ngữ lập trình khác nhau. Việc cài đặt ngơn ngữ đơn giản là tải

Docker image tương ứng, các ngôn ngữ lập trình hồn tồn khơng xung đột với
nhau. Do khơng phải dùng chương trình quản lý ứng dụng (như apt, yum) nên cũng
khơng xung đột với hệ thống host.
• Linux namespace là cơng nghệ để giới hạn những gì ứng dụng có thể truy cập.

Docker sử dụng namespace để tạo sự cô lập cho các container.
15


Chương 2 Tổng quan

• Giới hạn tài nguyên: cgroup là tính năng Linux dùng để giải quyết vấn đề này.

Docker có tích hợp sẵn cgroup.

• Dọn dẹp dễ dàng. Sau khi ứng dụng kết thúc thì có thể dọn dẹp đơn giản bằng cách

xóa bỏ container đã dùng để thực thi. Mọi file mà ứng dụng ghi ra và thay đổi trong
mơi trường thực thi chỉ nằm trong container đó mà mơi trường bên ngồi khơng bị
ảnh hưởng.

2.6.5

Namespace

Namespace là tính năng của kernel Linux có khả năng tạo ra các môi trường cô lập
cho process, gọi là namespace. Namespace sẽ giới hạn sự truy cập của một process tới
các tài nguyên trong khi process không nhận ra sự khác biệt. Một process thuộc một
namespace có thể thấy cái tài nguyên trong namespace đó nhưng khơng thể thấy các tài
ngun thuộc một namespace khác.
Namespace cung cấp dạng cô lập đầu tiên và rõ ràng nhất cho Docker container: các
process trong container không thể thấy các process trong container khác và các process
trong host, càng không thể tác động đến các process đó.

2.6.5.1

User namespace

User namespace giúp cơ lập danh sách user của namespace, cho phép namespace
con có user root khác với user root của namespace cha. Root trong namespace con có
thể có mọi quyền trong namespace con nhưng chỉ là một người dùng bình thường trong
namespace cha và khơng thể thực hiện các tác vụ đặc quyền trong namespace cha. Nhờ
có namespace, Docker container có thể có user root và có user riêng mà khơng ảnh hưởng
đến các container khác.
Ở cấu hình mặc định, Docker sẽ không dùng user namespace, uid và gid của người

dùng trong container sẽ ánh xạ trực tiếp thành chính uid và gid đó ra bên ngồi, người
dùng root trong container cũng là người dùng root bên ngoài container. Điều này rất kém
an tồn về khía cạnh bảo mật do khi kẻ tấn công chiếm quyền điều khiển container, nếu
có quyền root thì kẻ tấn cơng sẽ có nhiều cách khai thác hơn vào host.

16


Chương 2 Tổng quan

Để tránh việc container thực thi với người dùng root, Docker cung cấp khả năng
thực thi container process với một người dùng ít quyền khác root bằng lệnh USER trong
Dockerfile, hoặc cờ --user khi thực thi container. Uid của người dùng chỉ định bằng
lệnh USER sẽ chính là uid của process container. Group mặc định cũng là root nên cần
tạo cả group mới và người dùng mới.
Để tránh vấn đề trên xảy ra, có thể mở tính năng user namespace của Docker bằng
cờ --userns-remap của Docker daemon. Khi dùng user namespace uid và gid trong
container sẽ ánh xạ thành uid và guid khác trong host. Ví dụ uid 0 (root) trong container
ánh xạ thành uid 20000 trong host. Người dùng root trong container có mọi quyền và có
thể thực hiện mọi tác vụ đặc quyền trong container, như cài đặt kernel module, nhưng
trong namespace host, người dùng có uid 20000, khơng phải root, nên các tác vụ thực
hiện trên host sẽ phải kiểm tra quyền, và tất nhiên sẽ bị từ chối. Khi container bị chiếm
quyền điều khiển, kẻ tấn cơng cũng khơng thể có quyền root trên host.
Một ứng dụng CKAN thông thường sẽ không cần quyền root để thực thi, nên
container của các ứng dụng sẽ phải chạy dưới một người dùng khác root.

2.6.5.2

Process ID namespace (PID namespace)


PID namespace cung cấp sự cô lập trong việc cấp phát process id, danh sách các
process và chi tiết các process trong namespace. Các namespace cha vẫn có thể thấy các
process trong namespace con (với process id khác) nhưng các namespace khơng có quan
hệ thì sẽ hồn tồn không thấy process của nhau.
Process đầu tiên trong một PID namespace được gán PID 1 và có các tính năng
giống với process init thông thường. Kết thúc process PID 1 này sẽ kết thúc mọi process
khác trong cùng namespace. Docker sử dụng điều này để dừng container bằng lệnh
docker stop [12].
Với tính năng này, ứng dụng chạy trong container sẽ chỉ nhìn thấy các process mà
ứng dụng tạo ra mà khơng nhìn thấy các ứng dụng khác và các process trên hệ thống bên
ngoài container. Kéo theo là ứng dụng không thể thao tác và ảnh hưởng tới các process
bên ngoài ứng dụng.

17


×