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

📝
Technology

Hướng dẫn chỉnh sửa Claude Code Buddy: Cách nhận thú cưng huyền thoại phát sáng

Hướng dẫn chỉnh sửa Claude Code Buddy: Cách nhận thú cưng huyền thoại phát sáng Ngày 1 tháng 4 năm 2026, Anthropic đã âm...

Obsidian đã ra mắt Defuddle, đưa Obsidian Web Clipper lên một tầm cao mớiTechnology

Obsidian đã ra mắt Defuddle, đưa Obsidian Web Clipper lên một tầm cao mới

Obsidian đã ra mắt Defuddle, đưa Obsidian Web Clipper lên một tầm cao mới Tôi luôn rất thích triết lý cốt lõi của Obsid...

OpenAI đột ngột công bố "ba trong một": Trình duyệt + lập trình + ChatGPT hợp nhất, nội bộ thừa nhận đã đi sai đường trong năm quaTechnology

OpenAI đột ngột công bố "ba trong một": Trình duyệt + lập trình + ChatGPT hợp nhất, nội bộ thừa nhận đã đi sai đường trong năm qua

OpenAI đột ngột công bố "ba trong một": Trình duyệt + lập trình + ChatGPT hợp nhất, nội bộ thừa nhận đã đi sai đường tro...

2026, không còn ép bản thân 'kỷ luật'! Làm tốt 8 việc nhỏ này, sức khỏe tự nhiên đếnHealth

2026, không còn ép bản thân 'kỷ luật'! Làm tốt 8 việc nhỏ này, sức khỏe tự nhiên đến

2026, không còn ép bản thân 'kỷ luật'! Làm tốt 8 việc nhỏ này, sức khỏe tự nhiên đến Năm mới bắt đầu, năm ngoái bạn đã ...

Những bà mẹ cố gắng giảm cân nhưng không thành công, chắc chắn đều mắc phải điều nàyHealth

Những bà mẹ cố gắng giảm cân nhưng không thành công, chắc chắn đều mắc phải điều này

Những bà mẹ cố gắng giảm cân nhưng không thành công, chắc chắn đều mắc phải điều này Tháng Ba đã qua nửa, kế hoạch giảm...

📝
Technology

Hướng dẫn vận hành ổn định AI Browser 24 giờ

Hướng dẫn vận hành ổn định AI Browser 24 giờ Bài hướng dẫn này giới thiệu cách thiết lập một môi trường AI Browser ổn đị...