Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 54 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
54
Dung lượng
3 MB
Nội dung
ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN KHOA CÔNG NGHỆ PHẦN MỀM - o0o - ĐỒ ÁN MÔN HỌC ĐỒ ÁN ĐỀ TÀI: Tìm hiểu Docker ứng dụng minh họa Giảng viên hướng dẫn: Huỳnh Nguyễn Khắc Huy Sinh viên thực hiện: Phạm Quang Nhân-17520122 Trần Ngọc Toàn-17521142 TP.HCM, 30/12/2020 LỜI CẢM ƠN Lời chúng em xin gửi lời cảm ơn chân thành tới giảng viên môn đồ án 2, thầy Huỳnh Nguyễn Khắc Huy tận tình giúp đỡ thời gian qua Vì thời gian lực cịn có hạn chế nên khơng thể tránh khỏi sai sót thực đồ án Rất mong góp ý bổ sung thầy để đề tài em ngày hồn thiện Bên cạnh đó,chúng em xin gửi lời cảm ơn chân thành đến tất anh chị, bạn lớp kịp thời hỗ trợ, chia sẻ tài liệu đưa nhận xét, góp ý chân thành nhằm giúp đồ án hoàn thiện Đặc biệt anh chị K11 khoa Công nghệ phần mềm nhiệt tình chia sẻ kinh nghiệm giải đáp thắc mắc Chúng em xin chân thành cảm ơn! Tp Hồ Chí Minh, tháng 12 năm 2020 NHẬN XÉT CỦA GIẢNG VIÊN Mục lục LỜI MỞ ĐẦU Với chủ đề “Tìm hiểu Docker ứng dụng họa”nhóm chúng em thực dạng nghiên cứu xây dựng chức dựa vào việc tìm hiểu thực tế kiến thức học lớp, với nghiên cứu tảng để phát triển sâu rộng cho đồ án môn học sau Do lần chúng em tiếp cận với công nghệ Docker Kèm với hạn chế khả kiến thức thực tế Xin thầy/cô thông cảm sai xót chúng em I Giới thiệu đề tài Lý chọn đề tài Trong bối cảnh phát triển phần mềm ngày nay, lập trình viên khơng phải làm tốt khía cạnh lập trình, mà cịn phải đưa sản phẩm đến tay người tiêu dùng Khó khăn chỗ lập trình, lập trình viên sử dụng mơi trường khác với mơi trường sản phẩm Việc setup môi trường ban đầu phức tạp, làm lại cơng việc sau sản phẩm thành hình cịn khó gặp lỗi khơng tương thích khác Từ mà Docker đời để giải toán Nhận thấy nhu cầu với qua tìm hiểu, chúng em xin phép thực đề tài “Tìm hiểu Docker ứng dụng minh họa” II Giới thiệu docker Docker Docker tảng cung cấp cho công cụ, service để developers, adminsystems phát triển, thực thi, chạy ứng dụng với containers Hay nói cách khác tảng để cung cấp cách để building, deploy run ứng dụng cách dễ dàng tảng ảo hóa - "Build once, run anywhere" Hay nói cách dễ hiểu sau: Khi muốn chạy app phải thiết lập mơi trường chạy cho Thay cài mơi trường chạy cho chạy docker Ứng dụng Docker chạy vùng chứa (container) sử dụng hệ thống nào: máy tính xách tay nhà phát triển, hệ thống sở hệ thống đám mây Và công cụ tạo môi trường "đóng gói" (cịn gọi Container) máy tính mà không làm tác động tới môi trường máy, môi trường Docker chạy độc lập Docker làm việc nhiều tảng Linux, Microsoft Windows Apple OS X Docker mang lại lợi ích cho SysAdmin, Developer (Dev) lẫn Devops Đối với Dev, họ không cần phải biết nhiều việc vận hành chương trình, phần mềm phía Ngồi Dev tận dụng hàng nghìn chương trình đóng gói sẵn chia sẻ mạng Đối với SysAd, Docker mang đến linh hoạt quản lý, tăng khả tận dụng tài nguyên hệ thống Đối với Devops, lợi ích tận dụng hai lợi ích Virtualization ? Những nhiệm vụ Docker thực thơng qua Virtualization, Vậy lại chọn Docker? Virtualization host ? Khi nói Virtualization, đề cập đến việc nhập hệ điều hành Guest hệ điều hành máy chủ, cho phép nhà phát triển chạy nhiều HĐH máy ảo khác tất chúng chạy máy chủ, loại bỏ nhu cầu cung cấp thêm tài nguyên phần cứng Ưu điểm : • • • • • • • • • • Kích hoạt nhiều hệ điều hành máy Nó rẻ so với phương pháp trước đây, thiết lập sở hạ tầng / nhỏ gọn Nếu có trạng thái thất bại nào, thật dễ dàng để phục hồi bảo trì Cung cấp nhanh ứng dụng tài nguyên cần thiết cho nhiệm vụ Tăng suất, hiệu đáp ứng CNTT Sử dụng tài ngun: Thay phải ảo hóa tồn hệ điều hành cần build chạy container độc lập sử dụng chung kernel Tính đóng gói di động: Tất gói dependencies cần thiết đóng gói vừa đủ container Và sau mang triển khai server khác Cô lập tài nguyên: server bố container chạy container khơng cần biết bố CentOs hay Ubuntu Các container độc lập với giao tiếp với interface Hỗ trợ phát triển quản lý ứng dụng nhanh: Đối với Dev, sử dụng docker giúp họ giảm thiểu thời gian setup mơi trường, đóng gói môi trường giống từ Dev - Staging - Production Mã nguồn mở: Cộng đồng support lớn, tính release liên tục Từ kiến trúc VM trên, hình dung hệ điều hành Guest hoạt động máy ảo chạy hệ điều hành máy chủ Trong Virtualization, trình cấu hình lại phần cứng, phần sụn thủ công, cài đặt HĐH mới, cài đặt hệ điều hành hồn tồn tự động, tất bước lưu trữ dạng liệu tệp đĩa Trong Virtualization, ứng dụng hệ điều hành sống thùng chứa phần mềm riêng biệt có tên Virtural Machine (VM) , VM hồn tồn tách biệt, tất tài nguyên điện toán CPU, lưu trữ kết nối mạng gộp chung với Virtural Machine (VM) chất giả lập máy tính để thực thi ứng dụng giống máy tính thật VMs chạy máy vật lý sử dụng thứ gọi “hypervisor” Hypervisor phần cứng, phần mềm firmware chạy trực tiếp máy thật (host machine) có chức cho nhiều máy ảo chạy Host machine cung cấp cho VMs tài nguyên RAM, CPU Những tài nguyên phân bổ VMs theo cách mà bạn cho hợp lý Nếu VM chạy nhiều ứng dụng nặng bạn phải cung cấp tài nguyên cho nhiều tài nguyên VMs khác host machine Những VMs chạy host machine thường gọi guest machine Guest machine chứa tất thứ mà hệ thống cần để chạy ứng dụng hệ điều hành (OS), system binaries libraries VMs chạy hệ điều hành host machine truy cập trực tiếp đến phần cứng mà phải thông qua hệ điều hành Để khắc phục hạn chế Virtualization, Containerization đời Containerization ? Containerization kỹ thuật virtualization đưa containerization lên mức hệ điều hành Trong containerization, ta virtualization tài nguyên hệ điều hành, hiệu khơng có hệ điều hành khách tiêu thụ tài nguyên máy chủ, container sử dụng hệ điều hành máy chủ chia sẻ thư viện & tài nguyên có liên quan yêu cầu Các nhị phân thư viện cần thiết container chạy kernel host dẫn đến việc xử lý thực thi nhanh Container ? Container khơng giống VMs, Container khơng cung cấp ảo hóa phần cứng Một Container cung cấp ảo hóa cấp hệ điều hành khái niệm trừu tượng “user space” Sự khác lớn Container VMs Container chia sẻ host system’s kernel với container khác Cùng xem mơ hình bên để hiểu rõ Container Dựa vào sơ đồ bên Các bạn thấy gói container user space bao gồm ứng dụng, system binaries libraries mà không cần guest OS ảo hóa phần cứng VMs Đây mà làm cho container nhẹ (lightweight) Các container chạy công nghệ cụ thể Docker Engine Ưu điểm : • • • Các container nhỏ nhẹ chúng có chung nhân hệ điều hành Không nhiều thời gian để khởi động (trong vài giây) Hiệu suất cao với việc sử dụng tài nguyên thấp Sự khác biệt Docker Virtual Machine • Docker : Dùng chung kernel, chạy độc lập Host Operating System chạy hệ điều hành cloud Khởi động làm cho ứng dụng sẵn sàng chạy 500ms, mang lại tính khả thi cao cho dự án cần mở rộng nhanh • Virtual Machine : Cần thêm Guest OS tốn tài nguyên làm chậm máy thật sử dụng Thời gian khởi động trung bình 20s lên đến hàng phút, thay đổi phụ thuộc vào tốc độ ổ đĩa Các điểm hạn chế Docker Docker khơng phải hồn hảo Docker base Linux 64bit tính cgroup, namespaces Vì Linux 32bit mơi trường Window khơng thể chạy docker (đối với phiên CE) Sử dụng container tức bạn sử dụng chung kernel hệ điều hành Trong trường hợp bạn download image có sẵn có số cơng cụ kiểm sốt kernel server bạn bị kiểm sốt hồn tồn Các tiến trình chạy container bị stop hồn tồn liệu không mount backup Điều gây số bất tiện… Tuy nhiên Docker nói riêng hay Containerlization nói chung tương lai xu hướng chung hầu hết doanh nghiệp toàn giới Tại nên dùng Docker? • • • • • • Tiện lợi: Khi bạn phân bổ vào dự án mới, bạn đọc file README, thấy dự án cần cài nhiều thứ, ruby, rails, redis, mysql, nginx, thứ lại phải kèm theo version bao nhiêu, Bạn lên google search cách cài đặt, config thứ khoảng thời gian lâu Chưa hết, chưa cài xong conflic tùm lum, xung đột chẳng hạn, lại cịn ảnh hưởng tới chương trình cũ cài đặt máy chứ, cài lại hệ điều hành cho máy Thế thời gian, mệt mỏi với thao tác phụ mà chưa tập trung vào việc Nhưng với docker thứ đơn gian nhiều, vài dòng lệnh thơi, bạn nhanh chóng tạo mơi trường ảo hóa chứa đầy đủ cài đặt cần thiết cho project Dễ dàng sử dụng: Docker dễ cho người sử dụng từ developers, systems admins, architects…v…v tận dụng lợi container để build, test nhanh chóng Có thể đóng gói ứng dụng laptop họ chạy public cloud, private cloud v.v… “Build once, run anywhere” Tốc độ: Docker container nhẹ nhanh, bạn tạo chạy docker container vài giây so sánh với VMs lần chạy VMs cần nhiều thời gian khởi động Khả di động: môi trường develop dựng lên docker chuyển từ người sang người khác mà khơng làm thay đổi cấu hình Chia sẻ: DockerHub “app store for docker images” Trên DockerHub có hàng ngàn public images tạo cộng đồng Dễ dàng tìm thấy image mà bạn cần cần pull sử dụng với số sửa đổi nhỏ Môi trường chạy khả mở rộng: Bạn chia nhỏ chức ứng dụng thành container riêng lẻ Ví dụng Database chạy 4.7 Quản lý hóa đơn thuốc 4.8 Đăng kí khám bệnh cho bệnh nhân 4.9 Quản lý hóa đơn khám bệnh 4.10 Thống kê báo cáo 4.11 Quản lý hồ sơ khám bệnh 4.12 Chuyển, nhận hồ sơ khám bệnh 4.13 Quản lý đơn thuốc 4.14 Xem số thứ tự Sơ đồ cộng tác 2.1 Usecase “Đăng kí khám bệnh” Sơ đồ hoạt động 3.1 Usecase “Tạo hóa đơn thuốc” Sơ đồ 4.1 Usecase “Tạo thông tin thuốc” Sơ đồ logic Danh sách lớp Phòng STT Tên lớp/quan Loại Ràng buộc hệ Id Ten IdKhoa Id string Id - Loại Ràng buộc Id string - Khóa - Khóa ngoại Ý nghĩa/Ghi - Mã phòng Tên phòng Phòng thuộc khoa Khoa STT Tên lớp/quan hệ Id Ten Đơn Thuốc - Khóa Ý nghĩa/Ghi - Mã khoa Tên phòng ST Tên lớp/quan hệ Loại Ràng buộc T Id IdBacSi Id Id - Khóa Khố ngoại - Id đơn thuốc Bác sĩ tạo đơn IdHoSoKhamBen Id - Khóa ngoại - thuốc Đon thuốc thuộc h Note - hồ sơ khám benh Ghi bác sĩ String Ý nghĩa/Ghi - Chi Tiết Đơn Thuốc ST Tên Loại Ràng buộc T lớp/quan hệ Id IdDonThuo Id Id - c IdThuoc Số lượng Id - Number Khóa Khố ngoại Khố ngoại - Ý nghĩa/Ghi - Id chi tiết đơn thuốc Chi tiết đơn thuốc - thuộc đơn thuốc Chi tiết đơn thuốc có - loại thuốc Số lượng thuốc Thuốc ST Tên lớp/quan hệ Loại Ràng buộc T Id Tên Gia NSX SoLuong DonviTinh IdDanhMucThuo Id String Number String Number String Id - Khóa - Ý nghĩa/Ghi - Id thuốc Tên thuốc Giá thuốc Nhà sản xuất Số lượng tồn kho Khóa ngoại - Thuốc thuộc danh c mục thuốc Danh mục thuốc ST Tên lớp/quan hệ Loại Ràng buộc T Id Tên - Id String Ý nghĩa/Ghi Khóa - - Id danh mục thuốc Tên danh mục thuốc Chi Tiết Hoá Đơn Thuốc ST Tên lớp/quan hệ Loại Ràng buộc Ý nghĩa/Ghi T Id IdHoaDonThuo Id Id - Khóa Khố ngoại - Id ct hóa đơn thuốc Chi tiết hóa đơn 3 c IdThuoc SoLuong Id Number - Khoá ngoại - thuộc hóa đơn Mã thuốc Số lượng thuốc - Hoá Đơn Thuốc ST Tên Loại Ràng buộc T lớp/quan hệ Id Tên bệnh Id String - nhân - Khóa Ý nghĩa/Ghi - Id hóa đơn thuốc Khơng phải id bệnh nhân mua tự do(khơng khám phịng khám) IdDuocSi IdDonThuo c Ghi Id - Dược sĩ tạo hóa đơn - thuốc Hóa đơn thuốc ứng - - với đơn thuốc Ghi dược sĩ - Id - String Khoá ngoại Khoá ngoại Hồ Sơ Bệnh Nhân ST Tên Loại Ràng buộc Ý nghĩa/Ghi T lớp/quan hệ Tên Năm sinh Địa Điện thoại Nghề String Number String String String - - Ý nghĩa/Ghi nghiệp Hồ Sơ Bệnh nhân ST Tên Loại Ràng buộc T lớp/quan hệ Id Ten NgaySinh DiaChi DienThoai NgheNghie Id String Date String String String - - - p Email string - - Khố Id hồ sơ bệnh nhân - Hồ Sơ Khám Bệnh ST Tên lớp/quan hệ Loại Ràng buộc T Id Id - Khóa Ý nghĩa/Ghi - Id hồ sơ khám IdHoSoBenhNha Id n LyDoKham String Chi Tiết Khám Bệnh Khoá ngoại - Hồ sơ khám thuộc - hồ sơ bệnh nhân - - ST Tên lớp/quan hệ Loại Ràng buộc Ý nghĩa/Ghi T Id Id - Khóa - IdHoSoKhamBen Id - Khóa ngoại - Chi tiết khám h bệnh thuộc hồ IdBacSi Id - sơ khám Bác sĩ tạo chi KetQua KetQuaHinhAnh GhiChu String String String - Khóa ngoại - tiết khám bệnh - Hoá Đơn Khám Bệnh ST Tên lớp/quan Loại Ràng buộc T hệ Id IdHoSoKha Id Id - Khóa Khóa ngoại Ý nghĩa/Ghi Id hóa đơn khám Hóa đơn khám thuộc - m hồ sơ khám Chi tiết hoá đơn khám bệnh ST Tên lớp/quan hệ Loại Ràng buộc T Id Id - IdHoDonKhamBen h IdDichVu Id Id - Khóa Khố ngoại Khóa ngoại Ý nghĩa/Ghi - Id chi tiết hóa đơn - khám Chi tiết hóa đơn - thuộc hóa đơn Chi tiết hóa đơn có thơng tin dịch vụ Dịch vụ ST Tên Loại Ràng buộc T lớp/quan hệ Id Ten Gia Id String Number - Khóa Ý nghĩa/Ghi - - Ý nghĩa/Ghi Người Dùng ST Tên Loại Ràng buộc T lớp/quan hệ Id Ten NgaySinh DiaChi SoDienThoa Id String Date String String - - - i Email GioiTinh IdKhoa String String Id - - IdPhong 10 11 12 Username Password Role VI Id String String String - - Khóa Khóa ngoại Khóa ngoại - Id người dùng - Người dùng thuộc - khoa Người dụng làm - việc phòng Tên tài khoản Mật Quyền hạn KẾT LUẬN Kết đạt • Làm website MERN stack áp dụng với docker • Biết rõ tiện ích công nghệ docker, cách áp dụng vào mơi trường lập trình Hạn chế khó khăn Các thành viên cịn gặp khó khan việc gặp họp lại, có vấn đề chưa giải nhanh • Phân cơng cơng việc chưa hợp lý, đơi làm việc cịn bị trì trệ • ... đời để giải toán Nhận thấy nhu cầu với qua tìm hiểu, chúng em xin phép thực đề tài ? ?Tìm hiểu Docker ứng dụng minh họa? ?? II Giới thiệu docker Docker Docker tảng cung cấp cho cơng cụ, service để... Mục lục LỜI MỞ ĐẦU Với chủ đề ? ?Tìm hiểu Docker ứng dụng họa? ??nhóm chúng em thực dạng nghiên cứu xây dựng chức dựa vào việc tìm hiểu thực tế kiến thức học lớp, với nghiên cứu tảng... shipping, running ứng dụng cách nhanh chóng dễ dàng III Các thành phần kiến trúc Docker Các thành phần Docker Docker Engine Docker engine ứng dụng client-server có phiên phổ biến: • Docker Community