CodeGym /Các khóa học /Docker SELF /Lý do sử dụng Docker

Lý do sử dụng Docker

Docker SELF
Mức độ , Bài học
Có sẵn

9.1 Kiến trúc Microservices

Docker đã trở thành công cụ không thể thiếu trong lập trình hiện đại. Nó giúp tạo, chạy và triển khai ứng dụng trong các container độc lập, làm cho ứng dụng trở nên tiện lợi, ổn định và dễ sử dụng. Trong bài giảng này, chúng ta sẽ xem xét các ví dụ nơi Docker giúp cuộc sống của lập trình viên và quản trị viên trở nên dễ dàng hơn rất nhiều.

Vấn đề

Phát triển ứng dụng monolith thường gặp khó khăn trong việc bảo trì và mở rộng. Bất kỳ thay đổi nào trong một phần có thể ảnh hưởng đến các phần khác, làm cho việc cập nhật và kiểm tra trở nên phức tạp.

Giải pháp với Docker

Docker cho phép áp dụng kiến trúc microservices, đóng gói mỗi service vào một container riêng biệt. Điều này đảm bảo tính độc lập và cô lập của các microservices.

Ví dụ

Giả sử bạn có một ứng dụng với ba microservices: người dùng, đơn hàng và thanh toán. Với Docker, có thể tạo ba container:

Terminal

docker run -d --name users-service users-image
docker run -d --name orders-service orders-image
docker run -d --name payment-service payment-image 

9.2 Tích hợp và triển khai liên tục (CI/CD)

Vấn đề

Việc phát triển, kiểm thử và triển khai thường mất nhiều thời gian, đặc biệt nếu môi trường làm việc khác nhau.

Giải pháp với Docker

Docker giúp tạo ra môi trường giống nhau cho tất cả các giai đoạn phát triển. Điều này đảm bảo rằng ứng dụng sẽ hoạt động giống nhau ở mọi nơi — từ phát triển đến sản xuất.

Ví dụ

Cài đặt CI/CD với Docker cho phép tự động hóa việc build, kiểm thử và triển khai:

Build image:

Terminal


docker build -t my-app .

Chạy kiểm thử:

Terminal


docker run my-app ./run-tests.sh

Triển khai:

Terminal


docker push my-app:latest
ssh user@production-server "docker pull my-app:latest && docker run -d my-app"

9.3 Tính di động và nhất quán

Vấn đề

Thường thì ứng dụng chạy được trên một máy, nhưng lại từ chối chạy trên máy khác do sự khác biệt trong cấu hình hoặc phiên bản của dependencies.

Giải pháp với Docker

Docker cho phép đóng gói ứng dụng với tất cả dependencies của nó vào một container, đảm bảo chạy được trong bất kỳ môi trường nào.

Ví dụ

Với Dockerfile, bạn có thể mô tả dependencies và các lệnh để khởi chạy ứng dụng:

dockerfile

FROM node:14
WORKDIR /app
COPY package.json .
RUN npm install
COPY . .
CMD ["npm", "start"]

Bây giờ ứng dụng sẽ chạy ổn định cả trên máy cục bộ, trên server hoặc trên cloud.

9.4 Đảm bảo bảo mật

Vấn đề

Triển khai ứng dụng có thể dễ bị tổn thương, đặc biệt nếu sử dụng thư viện và công cụ từ bên thứ ba.

Giải pháp với Docker

Docker cung cấp sự cô lập container, giảm rủi ro. Các container hoạt động độc lập, hạn chế ảnh hưởng đến hệ thống.

Ví dụ

Sử dụng các tham số để giới hạn tài nguyên và cải thiện bảo mật:

Terminal


docker run -d --name secure-app --memory="512m" --cpus="1" --security-opt=no-new-privileges my-secure-app

9.5 Kiểm thử và tự động hóa

Vấn đề

Kiểm thử trên nhiều cấu hình khác nhau mất thời gian và có thể ảnh hưởng đến môi trường chính.

Giải pháp với Docker

Docker cho phép tạo môi trường kiểm thử được cách ly mà không ảnh hưởng đến hệ thống chính.

Ví dụ

Ví dụ chạy cơ sở dữ liệu và ứng dụng trong môi trường kiểm thử:

Terminal


docker run -d --name test-db -e POSTGRES_PASSWORD=mysecretpassword postgres
docker run -d --name test-app --link test-db:db my-app 

9.6 Điện toán đám mây và mở rộng quy mô

Vấn đề

Mở rộng quy mô ứng dụng trên đám mây có thể phức tạp và tốn kém.

Giải pháp với Docker

Docker giúp đơn giản hóa việc mở rộng nhờ tích hợp với các nền tảng đám mây như AWS, Azure và Google Cloud.

Ví dụ

Sử dụng Docker và Kubernetes, bạn có thể dễ dàng thiết lập mở rộng quy mô. Đây là một ví dụ về tệp yaml. Có thể bây giờ sẽ hơi khó hiểu, nhưng dần dần chúng ta sẽ hiểu rõ hơn.

yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
spec:
  replicas: 3
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
        - name: my-app
          image: my-app:latest
          ports:
            - containerPort: 80
1
Опрос
Các lệnh cơ bản của Docker,  10 уровень,  3 лекция
недоступен
Các lệnh cơ bản của Docker
Các lệnh cơ bản của Docker
Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION