1. Trang chủ
  2. » Giáo Dục - Đào Tạo

(TIỂU LUẬN) môn CÔNG NGHỆ NET đề tài DOCKER TRONG c

32 27 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

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 ĐỀ TÀI: DOCKER TRONG C# MÔN: CÔNG NGHỆ NET Giảng viên hướng dẫn: Huỳnh Hồ Thị Mộng Trinh Sinh viên thực hiện: Nguyễn Công Phi – 19522006 Lương Thiện Phước – 19522055 Bùi Như Phước - 19522052 LỜI CẢM ƠN Chúng em xin gửi lời cảm ơn chân thành đến cô Huỳnh Hồ Thị Mộng Trinh giảng viên môn “Công nghệ Net” khoa Công nghệ phần mềm tận tâm hướng dẫn chúng em trang bị cho chúng em kiến thức, kĩ cần có để hồn thành đề tài nghiên cứu Tuy nhiên trình nghiên cứu đề tài, kiến thức chun ngành cịn hạn chế chưa có kinh nghiệm làm việc thực nên chúng em cịn nhiều thiếu sót tìm hiểu, đánh giá trình bày đề tài Rất mong nhận quan tâm, góp ý để đề tài chúng em đầy đủ hoàn chỉnh Chúng em xin chân thành cảm ơn Nhóm thực đề tài Mục lục I Giới thiệu chung: 1.Đặt vấn đề: 2.Định nghĩa: II Công nghệ Docker: 1.Containerlization: 2.Lịch sử container 2.1 Định nghĩa: 2.2 Lịch sử hình thành Container III Các thành phần docker 1.Các thành phần 1.1 Docker Engine: 1.3 Docker Registry/Docker Hub 2.Một số lệnh bản: IV 2.1 Các câu lệnh: 2.3 Một số option thường dùng với docker run Docker C# 1.Docker C# làm gì: 2.Giải thích dockerfile 2.1 Cấu trúc dockerfile: 3.Giải thích dockercompose 3.1 Khái niệm 3.2 Đặc điểm 3.3 Lợi ích V Kết luận 1.Độ hữu dụng docker 2.Ưu nhược điểm 2.1 Ưu điểm 2.2 Nhược điểm VI Bảng phân công công việc Tài liệu tham khảo I Giới thiệu chung: Đặt vấn đề: - Khi phát triển bảo trì ứng dụng, thông thường cần cài đặt số mơi trường, thư viện, phụ thuộc cho chương trình đó, việc khó khăn chuyển mơi trường, đặc biệt với môi trường yêu cầu hệ điều hành khác lại thêm rắc rối, Docker cơng cụ để đơn giản hóa điều Chỉ với vài dịng lệnh, nhanh chóng tạo mơi trường ảo hố chứa đầy đủ cài đặt cần thiết cho dự án Nhưng không dừng lại đó, cơng dụng Docker cịn nhiều ngày sử dụng phổ biến khắp nơi Định nghĩa: - 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 - Phần lớn nói Docker, ta thường hiểu Cơng nghệ Docker Nó phần mềm chạy Linux Windows, cho phép dựng, kiểm thử triển khai ứng dụng cách nhanh chóng Docker đóng gói phần mềm vào đơn vị tiêu chuẩn hóa gọi container Docker đặt tên xuất phát từ cách diễn đạt dock worker - Docker có hai phiên chính: o Docker Community Editon – CE: Là phiên miễn phí o Docker Enterprise – EE: Phiên phiên trả phí, sử dụng phiên có hỗ trợ từ nhà phát hành II Công nghệ Docker: Containerlization: - Trước đây, mơ hình máy chủ thường là: o Máy chủ vật lý (physical server) + hệ điều hành (operating system) + ứng dụng (application) - Vấn đề gặp phải lãng phí tài nguyên o Một máy chủ cài OS o Cho dù có ổ cứng khủng, ram khủng khơng tận dụng hết lợi - Sau đời cơng nghệ ảo hóa virtualization o Có thể nghe tới tên Virtualbox hay VMware khơng, đó o Với cơng nghệ này, máy chủ vật lý cài đặt nhiều OS, tận dụng tài nguyên tốt - Nhưng lại nảy sinh vấn đề tiếp: o Về tài nguyên:  Khi bật máy ảo, cần cấu hình để cung cấp từ đầu tài nguyên ổ cứng ram từ máy thật cho máy ảo  Sau bật máy ảo, máy thật tái sử dụng tài nguyên cho o Về thời gian:  Việc khởi động, tắt máy ảo lâu, lên tới hàng phút - Ở bước tiến hố tiếp theo, cơng nghệ containerlization đời: o Với công nghệ này, máy chủ vật lý, ta cài đặt nhiều máy ảo (giống với cơng nghệ ảo hóa virtualization), tốt chỗ máy (Guess OS) dùng chung phần nhân máy mẹ (Host OS) chia sẻ với tài nguyên máy mẹ Có thể nói cần tài ngun cấp, cần cấp nhiêu, việc tận dụng tài nguyên tối ưu Lịch sử container 2.1 Định nghĩa: - Các phần mềm, chương trình Container Engine (là cơng cụ ảo hóa tinh gọn cài đặt host OS) đóng gói thành container - Vậy Container giải pháp để chuyển giao phần mềm cách đáng tin cậy mơi trường máy tính khác cách: o Tạo môi trường chứa thứ mà phần mềm cần để chạy o Không bị yếu tố liên quan đến môi trường hệ thống làm ảnh hưởng tới o Không làm ảnh hưởng tới phần lại hệ thống - Ví dụ: Chúng ta hiểu ruby, rails, mysql bỏ gọn vào nhiều thùng (container), ứng dụng chạy thùng đó, có sẵn thứ cần thiết để hoạt động, không bị ảnh hưởng từ bên ngồi khơng gây ảnh hưởng ngồi - Các tiến trình (process) container bị lập với tiến trình container khác hệ thống nhiên tất container chia sẻ kernel host OS (dùng chung host OS) - Ưu điểm Container: o Linh động: Triển khai nơi đâu phụ thuộc ứng dụng vào tầng OS sở hạ tầng loại bỏ 12 1.3 Docker Registry/Docker Hub - Docker Registry dịch vụ máy chủ cho phép lưu trữ docker image cá nhân, cơng ty, team, Dịch vụ Docker Registry cung cấp tổ chức thứ dịch vụ nội xây dựng riêng muốn - Một số dịch vụ Docker Registry phổ biến như: o Azure Container Registry o Docker Hub o Quay Enterprise o Google Container Registry o AWS Container Registry Một số lệnh bản: 2.1 Các câu lệnh: - Cấu trúc lệnh “docker ” - o Các component là: image, container, docker, volume, network, o Các command là: ls, rm, prune, build, run, … docker ps: o Là viết tắt docker container ls Dùng để liệt kê container chạy o Khi sử dụng với tham số:  -a/-all: Liệt kê tất container, kể chạy hay kể thúc  - -q/-quiet: liệt kê id container docker pull: o Là viết tắt docker image pull Để tải image cụ thể tập hợp image 13 o Hầu hết image tạo dựa image sở từ Docker Hub Docker Hub chứa nhiều image dựng sẵn, mà ta pull dùng mà không cần phải định nghĩa cấu hình lại từ đầu - docker build: o Là viết tắt docker image build Lệnh dùng để build image từ Dockerfile context Context tập file xác đinh đường dẫn url cụ thể Ta sử dụng thêm tham số -t để gắn nhãn cho image - docker run: o Là viết tắt docker container run Lệnh dùng để chạy container dựa image mà ta có sẵn Ta thêm vào sau lệnh vài câu lệnh khác -it bash để chạy bash từ container - docker logs: o Lệnh sử dụng để hiển thị logs container, ta cần phải rõ container để hiển thị logs thơng qua tên Ngồi sử dụng thêm số flag follow để giữ việc theo dõi logs - docker volume ls: o Lệnh dùng để liệt kê volumn mà container sử dụng, volume chế dùng để lưu trữ liệu sinh sử dụng Docker - docker rm: o Là viết tắt docker container rm Lệnh dùng để xóa nhiều container - docker rmi: 14 o - Lệnh dùng để xóa nhiều images docker stop: o Là viết tắt docker container stop Lệnh dùng để stop nhiều container Ngoài ta dung docker kill để bắt buộc container dừng lại 2.3 Một số option thường dùng với docker run: - Trong lệnh có lẽ docker run lệnh hữu ích ta thường sử dụng Nó sử dụng để tạo container dựa vào image cụ thể Có nhiều option sử dụng với docker run o detach, -d : Mặc định docker container chạy input, output, lỗi thị trực tiếp hình terminal Tuy nhiên với tùy chọn detach/-d, container chạy ngầm output, lỗi không hiển thị o entrypoint: Thiết lập ghi đè lệnh mặc định chạy images Entrypoint tập lệnh tham số chạy container chạy từ image Bất kỳ câu lệnh tham số truyền vào sau docker run nối vào entrypoint o env, -e: Thiết lập biến môi trường sử dụng cặp (key=value) Nếu ta có biến mơi trường file ta truền vào file tùy chọn env-file o ip: Khai báo địa IP cho container o name: Gắn tên cho container o publish, -p | publish-all, -p: Do container docker gộp chạy network riêng nên độc lập với máy chủ mà docker chạy Để mở cổng network container 15 ánh xạ với cổng máy host ta sử dụng tùy chọn publish, -p Hoặc sử dụng publish-all, -P mở tất cổng container o rm: Tự động xóa container o tty, -t: Cấp terminal ảo cho container Tùy chọn thường sử dụng với interactive, -i giúp cho STDIN mở container chạy dạng ngầm o volume, -v: Gắn volume vào container, cho phép thao tác container liệu lưu trữ máy chủ o workdir, -w: Chỉ định thư mục làm việc bên container Giả sử ta làm việc với thư mục app docker IV Docker C# Docker C# làm gì: - Docker hoạt động tốt với tất ứng dụng C# không sử dụng GUI (Graphic User Interface), tức ứng dụng chạy không render hình giao diện - Tức C# NET Docker sử dụng hiệu ứng dụng NET không sử dụng giao diện, web ASP.NET,… Và không sử dụng thực hiệu Windows Form WPF - Deploy ứng dụng C# Docker - Chúng ta khởi chạy dự án C# nhiều môi trường khác (window, macos, linux, ) - Dễ dàng thiết lập môi trường làm việc Chỉ cần config lần cài đặt lại dependencies Nếu thay đổi máy có người tham gia vào project cần lấy config đưa cho họ 16 Docker tích hợp VCS-git, để tracking dịng lệnh thiết lập, hay đánh dấu version cho ứng dụng - Tiết kiệm thời gian cho dev (Docker start va stop vài giây) Giải thích dockerfile 2.1 Cấu trúc dockerfile: - Cấu trúc Dockerfile thường thấy gồm thành phần: FROM, RUN, CMD - Trong FROM thị bắt buộc phải có file Ngồi cịn có thị khác hay xuất hiện, là: MAINTAINER, COPY, ENV, ENTRYPOINT, WORKDIR, USER, VOLUME, EXPOSE 2.1.1 From: - Là thị bắt buộc file Chỉ thị phải đặt Dockerfile Ý nghĩa định image sở để từ triển khai, xây dựng image Để xây dựng từ image sở cần đọc document image để biết chứa gì, chạy lệnh Ví dụ, chọn xây dựng từ image centos:lastest lệnh cài đặt, cập nhật gói yum, chọn ubuntu:latest trình quản lý gói lại apt… - FROM xuất nhiều lần Dockerfile, tạo nhiều image sử dụng giai đoạn build khác Với lệnh FROM, xóa trạng thái FROM tạo trước - Cấu trúc: o FROM [AS ] o FROM [:] [AS ] o FROM [@] [AS ] 17 - Trong đó: Từ khoá “AS” dùng muốn đổi tên image; “tag” “digest” tùy chọn image, mặc định khơng có tag lấy version cuối cùng: latest - Ví dụ: o FROM centos AS testImage o FROM centos:7 AS testImage 2.1.2 Run - Là thị không bắt buộc - Chạy trình build image kết đc lưu lại thêm image gốc - Với câu lệnh RUN, có forms cho lựa chọn: - RUN (shell form, command chạy bên shell, mặc định /bin/sh - c Linux cmd /S /C Windows Chúng ta thực nhiều lệnh lúc cách thức ‘shell form‘ sử dụng thị RUN với dấu ‘\‘) - Ví dụ: o RUN apt-get update; o apt-get install curl -y o RUN [“executable”, “param1”, “param2”] (exec form) - Ví dụ: RUN apt-get update RUN apt-get install curl -y 2.1.3 CMD: - Là thị không bắt buộc - Định nghĩa câu lệnh chạy sau chạy container - Có thể khai báo nhiều có CMD cuối có tác dụng 18 - Khi sử dụng hình thức shell cho lệnh CMD, thực thi với /bin/sh –c - Ví dụ: o CMD [“/bin/sh”, “/home/run.sh”] o LABEL: cung cấp metadata cho image Có thể sử dụng để add thông tin maintainer o INSPECT: Để xem label images o ENV: thiết lập biến môi trường o COPY: Sao chép file thư mục vào container o WORKDIR: Thiết lập thư mục làm việc cho thị khác như: RUN, CMD, ENTRYPOINT, COPY, ADD,… o ARG: Định nghĩa giá trị biến dùng lúc build image o ENTRYPOINT: cung cấp lệnh đối số cho container thực thi o EXPOSE: khai báo port lắng nghe image o VOLUME: tạo điểm gắn thư mục để truy cập lưu trữ data Giải thích dockercompose 3.1 Khái niệm - Docker compose công cụ dùng để định nghĩa run multi-container cho Docker application Với compose sử dụng file YAML để config services cho application Sau dùng command để create run từ config Sử dụng đơn giản với ba bước: - Khai báo app’s environment Dockerfile 19 - Khai báo services cần thiết để chạy application file dockercompose.yml - Run docker-compose up để start run app 3.2 Đặc điểm - Không giống Dockerfile (build image) Docker compose dùng để build run container Các thao tác docker-compose tương tự lệnh: docker run - Docker compose cho phép tạo nhiều service(container) giống lệnh: $ docker-compose scale = 3.3 Lợi ích - Tạo nhiều môi trường độc lập (isolated environments) host: Compose cô lập môi trường project để đảm bảo chúng không bị xung đột lẫn nhau, dễ dàng tạo mơi trường - Chỉ tạo lại container thay đổi: Compose nhận biết service chưa thay đổi sử dụng lại container tương ứng với service - Điều chỉnh biến sử dụng cho môi trường: Compose sử dụng biến Compose file cho mơi trường Vì với mơi trường hay người dùng khác nhau, điều chỉnh biến sử dụng Compose để thiết lập service V Kết luận Độ hữu dụng docker - Sử dụng docker giúp cho tất developer phát triển môi trường giống hệt 20 - Do môi trường test phát triển giống nên phòng trừ trường hợp test local lại fail với CI - Có thể cố định version cách chia sẻ image fetch library liên quan Hoạt động library lấy go get không bị thay đổi - Vì kiểm tra hoạt động mà cài đặt OK deploy docker image đó, việc login vào server để thay đổi cài đặt trở nên không cần thiết Hơn nữa, hồn tồn test blackbox xem việc cài đặt chuẩn hay chưa - Đây vài ví dụ, nhiên cho thấy Docker có ích giúp giải vấn đề bên lề nhiều thời gian bên cạnh việc phát triển Ưu nhược điểm 2.1 Ưu điểm - Tính đồng nhất: Khi nhiều người phát triển dự án không bị sai khác mặt mơi trường - Đóng gói: o Có thể ẩn mơi trường bao gồm app vào gói gọi container o Có thể test container o Việc bỏ hay tạo lại container dễ dàng - Linh động (tính quán): o Có thể test container dùng để phát triển CI o Có thể deploy container test CI lên server o Có thể scale container deploy 2.2 Nhược điểm - Tốn thời gian học tập o Đoạn đầu (chạy container) thoải mái cảm thấy làm chủ giới, nhiên nhanh chóng gặp nhiều vấn đề thực tế áp dụng vào mơi trường phát triển, câu hỏi "đoạn làm nhỉ?", hay "không biết cài đặt cách tốt nhỉ?" xuất đòi hỏi kiến thức chuyên sâu 21 o Trong đội phát triển không cần tất phải có kiến thức chun sâu Docker, nhiên cần người nắm vững kiến thức để giải vấn đề gặp phải - Công cần thiết để biết viết code môi trường gần không so với phát triển local 22 VI Bảng phân công công việc STT Chuẩn bị, lên kế hoạch Chuẩn bị nội dung Soạn nội dung thuyết trình docker Quay video thuyết trình nội dung docker Quay video demo Soạn nội dung báo cáo Tỷ lệ cơng việc phân cơng Mức độ hồn thành Tên cơng việc 23 Tài liệu tham khảo [1] Document docker: https://docs.docker.com/ [Full] Docker gì? | Hướng dẫn đầy đủ Docker Compose: https://www.youtube.com/watch?v=yWCse8S2qsM [2] Deploy ứng dụng ASP.NET Core Docker - Comdy.vn https://comdy.vn/docker/deploy-ung-dung-asp-net-core-bang-docker/ [3] Tại nên đưa Docker làm chuẩn phát triển https://viblo.asia/p/taisao-nen-dua-docker-lam-chuan-khi-phat-trien-MdZkAYBakox [4] 24 ... tưởng c? ?ng nghệ docker, phần mềm, tên đầy đủ docker engine, hoạt động dựa c? ?ng nghệ container - Một số dịch vụ kh? ?c xử lý container giống docker III C? ?c thành phần docker C? ?c thành phần 1.1 Docker. .. image) Docker compose dùng để build run container C? ?c thao t? ?c docker- compose tương tự lệnh: docker run - Docker compose cho phép tạo nhiều service(container) giống lệnh: $ docker- compose scale... https://docs .docker. com/ [Full] Docker gì? | Hướng dẫn đầy đủ Docker Compose: https://www.youtube.com/watch?v=yWCse8S2qsM [2] Deploy ứng dụng ASP .NET Core Docker - Comdy.vn https://comdy.vn /docker/ deploy-ung-dung-asp -net- core-bang -docker/

Ngày đăng: 11/12/2022, 04:38

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w