Hướng dẫn bắt đầu Docker: Nhanh chóng container hóa ứng dụng của bạn

2/18/2026
8 min read
# Hướng dẫn bắt đầu Docker: Nhanh chóng container hóa ứng dụng của bạn

Docker đã trở thành một phần không thể thiếu trong phát triển và triển khai phần mềm hiện đại. Mặc dù các cuộc thảo luận về Kubernetes diễn ra tràn lan, nhưng Docker vẫn là công cụ được nhiều công ty lựa chọn để xây dựng, kiểm tra và triển khai ứng dụng. Bài viết này sẽ hướng dẫn bạn nhanh chóng làm quen với Docker, hiểu các khái niệm cốt lõi của nó và cung cấp một ví dụ thực tế để giúp bạn bắt đầu container hóa ứng dụng của mình.

## Các khái niệm cốt lõi của Docker

Trước khi bắt đầu thực hành, điều quan trọng là phải hiểu một số khái niệm cốt lõi của Docker:

*   **Image (Ảnh):** Ảnh là một template chỉ đọc, chứa mọi thứ cần thiết để chạy một ứng dụng: mã, môi trường runtime, công cụ hệ thống, thư viện và các dependency. Tương tự như ảnh máy ảo, nhưng nhẹ hơn nhiều.

*   **Container (Container):** Container là một instance đang chạy được tạo từ một ảnh. Nó là một instance runtime của ảnh, chứa ứng dụng và tất cả các dependency của nó. Các container được cách ly với nhau, có hệ thống tệp, tiến trình và không gian mạng riêng.

*   **Docker Hub:** Docker Hub là một kho lưu trữ ảnh công khai, nơi bạn có thể tải xuống các ảnh được xây dựng sẵn hoặc tải lên ảnh của riêng bạn. Tương tự như GitHub, nhưng dành riêng cho ảnh Docker.

*   **Dockerfile:** Dockerfile là một tệp văn bản chứa tất cả các chỉ thị để xây dựng một ảnh Docker. Bằng cách viết Dockerfile, bạn có thể tự động hóa quá trình tạo ảnh.

*   **Docker Compose:** Docker Compose là một công cụ để định nghĩa và chạy các ứng dụng Docker đa container. Nó cho phép bạn sử dụng tệp YAML để cấu hình các service của ứng dụng, sau đó sử dụng một lệnh duy nhất để khởi động hoặc dừng tất cả các service.

## Cài đặt Docker

Đầu tiên, bạn cần cài đặt Docker. Docker cung cấp các gói cài đặt cho nhiều hệ điều hành khác nhau. Truy cập [trang web chính thức của Docker](https://www.docker.com/get-started/) và làm theo hướng dẫn tương ứng để cài đặt.

Sau khi cài đặt xong, bạn có thể chạy lệnh `docker --version` để xác minh rằng Docker đã được cài đặt chính xác.

## Container hóa một ứng dụng Python đơn giản

Chúng ta sẽ tạo một ứng dụng Python đơn giản và sử dụng Docker để container hóa nó.

### 1. Tạo ứng dụng Python

Tạo một tệp có tên `app.py`, chứa đoạn mã sau:

```python
from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello, Docker!"

if __name__ == "__main__":
    app.run(debug=True, host='0.0.0.0')

Ứng dụng Flask đơn giản này sẽ trả về "Hello, Docker!" trên đường dẫn gốc /.

2. Tạo tệp requirements.txt

Ứng dụng phụ thuộc vào thư viện Flask, chúng ta cần tạo một tệp requirements.txt để khai báo các dependency này.

Flask

3. Tạo Dockerfile

Tạo một tệp có tên Dockerfile và thêm nội dung sau:

# Sử dụng ảnh Python chính thức làm ảnh cơ sở
FROM python:3.9-slim-buster

# Thiết lập thư mục làm việc
WORKDIR /app

# Sao chép tệp requirements.txt vào thư mục làm việc
COPY requirements.txt .

# Cài đặt các dependency
RUN pip install --no-cache-dir -r requirements.txt
```# Sao chép mã ứng dụng vào thư mục làm việc
COPY app.py .

# Mở cổng 5000
EXPOSE 5000

# Định nghĩa lệnh khởi động
CMD ["python", "app.py"]

Giải thích Dockerfile:

  • FROM python:3.9-slim-buster: Chỉ định image nền là phiên bản rút gọn của Python 3.9.
  • WORKDIR /app: Đặt thư mục làm việc bên trong container là /app.
  • COPY requirements.txt .: Sao chép file requirements.txt từ thư mục hiện tại vào thư mục /app trong container.
  • RUN pip install --no-cache-dir -r requirements.txt: Chạy lệnh pip bên trong container để cài đặt các dependency được chỉ định trong file requirements.txt. Tham số --no-cache-dir giúp giảm kích thước image.
  • COPY app.py .: Sao chép file app.py từ thư mục hiện tại vào thư mục /app trong container.
  • EXPOSE 5000: Khai báo container sẽ lắng nghe trên cổng 5000.
  • CMD ["python", "app.py"]: Định nghĩa lệnh sẽ được thực thi khi container khởi động.

4. Xây dựng Docker Image

Trong thư mục chứa Dockerfile, chạy lệnh sau để xây dựng Docker image:

docker build -t my-python-app .
  • docker build: Lệnh xây dựng image.
  • -t my-python-app: Chỉ định tên cho image (my-python-app).
  • .: Chỉ định thư mục chứa Dockerfile (thư mục hiện tại).

Quá trình xây dựng có thể mất một chút thời gian, tùy thuộc vào tốc độ mạng và kích thước của các dependency.

5. Chạy Docker Container

Sử dụng lệnh sau để chạy Docker container:

docker run -d -p 5000:5000 my-python-app
  • docker run: Lệnh chạy container.
  • -d: Chạy container ở chế độ detached (chạy ngầm).
  • -p 5000:5000: Ánh xạ cổng 5000 của host machine vào cổng 5000 của container.
  • my-python-app: Chỉ định tên image sẽ sử dụng.

6. Xác minh ứng dụng

Truy cập http://localhost:5000 trong trình duyệt, bạn sẽ thấy "Hello, Docker!".

7. Dừng và xóa Container

Sử dụng lệnh sau để dừng container:

docker stop 

`` Bạn có thể xem thông qua lệnh docker ps.

Sử dụng lệnh sau để xóa container:

docker rm 

Bắt đầu với Docker Compose

Nếu ứng dụng của bạn bao gồm nhiều service, bạn có thể sử dụng Docker Compose để quản lý chúng.

1. Tạo file docker-compose.yml

Tạo một file có tên docker-compose.yml và thêm nội dung sau:

version: "3.9"
services:
  web:
    image: my-python-app
    ports:
      - "5000:5000"

Giải thích docker-compose.yml:* version: "3.9": Chỉ định phiên bản của tệp Docker Compose.

  • services: Định nghĩa các dịch vụ của ứng dụng.
  • web: Định nghĩa một dịch vụ có tên là "web".
  • image: my-python-app: Chỉ định image mà dịch vụ sử dụng.
  • ports: Định nghĩa ánh xạ cổng.

2. Khởi động ứng dụng

Trong thư mục chứa tệp docker-compose.yml, hãy chạy lệnh sau để khởi động ứng dụng:

docker-compose up -d
  • docker-compose up: Lệnh khởi động ứng dụng.
  • -d: Chạy container ở chế độ tách rời (detached).

3. Dừng ứng dụng

Sử dụng lệnh sau để dừng ứng dụng:

docker-compose down

Các biện pháp bảo mật tốt nhất cho Docker

Như đã thấy từ cuộc thảo luận, tính bảo mật của Docker image là một vấn đề quan trọng. Dưới đây là một số biện pháp bảo mật tốt nhất cho Docker:

  • Sử dụng image chính thức: Cố gắng sử dụng các image được cung cấp chính thức, vì chúng thường được quét và bảo trì về mặt bảo mật.
  • Quét lỗ hổng trong image: Sử dụng các công cụ như Trivy để quét các lỗ hổng đã biết trong image và cập nhật image kịp thời.
  • Sử dụng nguyên tắc quyền tối thiểu: Tránh chạy container với quyền root.
  • Giới hạn tài nguyên container: Sử dụng cgroups để giới hạn việc sử dụng CPU và bộ nhớ của container.
  • Cập nhật image thường xuyên: Luôn cập nhật image để vá các lỗ hổng bảo mật.
  • Sử dụng công cụ quét bảo mật: Các công cụ như Snyk, Clair có thể được tích hợp vào quy trình CI/CD của bạn để tự động quét các lỗ hổng trong image.

Kết luậnBài viết này cung cấp hướng dẫn nhanh về Docker, bao gồm các khái niệm cốt lõi, các bước cài đặt và một ví dụ về container hóa ứng dụng Python đơn giản. Bằng cách học những kiến thức cơ bản này, bạn có thể bắt đầu sử dụng Docker để xây dựng, kiểm tra và triển khai ứng dụng của mình. Hãy nhớ rằng, bảo mật là tối quan trọng, hãy luôn chú ý đến tính bảo mật của Docker image và thực hiện các biện pháp thích hợp để bảo vệ ứng dụng của bạn. Mặc dù Kubernetes rất mạnh mẽ trong việc điều phối container quy mô lớn, nhưng Docker vẫn là một giải pháp đơn giản và hiệu quả trong nhiều trường hợp. Nắm vững Docker, bạn sẽ có thể đối phó tốt hơn với những thách thức của việc phát triển và triển khai phần mềm hiện đại.

Published in Technology

You Might Also Like

Cách sử dụng công nghệ điện toán đám mây: Hướng dẫn đầy đủ để xây dựng cơ sở hạ tầng đám mây đầu tiên của bạnTechnology

Cách sử dụng công nghệ điện toán đám mây: Hướng dẫn đầy đủ để xây dựng cơ sở hạ tầng đám mây đầu tiên của bạn

Cách sử dụng công nghệ điện toán đám mây: Hướng dẫn đầy đủ để xây dựng cơ sở hạ tầng đám mây đầu tiên của bạn Giới thiệu...

Cảnh báo! Cha đẻ của Claude Code thẳng thắn: Một tháng nữa không dùng Plan Mode, danh hiệu kỹ sư phần mềm sẽ biến mấtTechnology

Cảnh báo! Cha đẻ của Claude Code thẳng thắn: Một tháng nữa không dùng Plan Mode, danh hiệu kỹ sư phần mềm sẽ biến mất

Cảnh báo! Cha đẻ của Claude Code thẳng thắn: Một tháng nữa không dùng Plan Mode, danh hiệu kỹ sư phần mềm sẽ biến mất G...

2026年 Top 10 深度学习资源推荐Technology

2026年 Top 10 深度学习资源推荐

2026年 Top 10 深度学习资源推荐 随着深度学习在各个领域的迅速发展,越来越多的学习资源和工具涌现出来。本文将为您推荐2026年最值得关注的十个深度学习资源,帮助您在这一领域中快速成长。 1. Coursera Deep Learn...

Top 10 AI đại lý năm 2026: Phân tích điểm bán hàng cốt lõiTechnology

Top 10 AI đại lý năm 2026: Phân tích điểm bán hàng cốt lõi

Top 10 AI đại lý năm 2026: Phân tích điểm bán hàng cốt lõi Giới thiệu Với sự phát triển nhanh chóng của trí tuệ nhân tạo...

2026年 Top 10 AI 工具推荐:释放人工智能的真正潜力Technology

2026年 Top 10 AI 工具推荐:释放人工智能的真正潜力

2026年 Top 10 AI 工具推荐:释放人工智能的真正潜力 Trong thời đại công nghệ phát triển nhanh chóng ngày nay, trí tuệ nhân tạo (AI) đã trở ...

2026年 Top 10 AWS工具和资源推荐Technology

2026年 Top 10 AWS工具和资源推荐

2026年 Top 10 AWS工具和资源推荐 Trong lĩnh vực điện toán đám mây đang phát triển nhanh chóng, Amazon Web Services (AWS) luôn là ...