0
0
Lập trình
TT

🐳 Làm chủ Dockerfile: Hướng dẫn toàn diện cho người mới

Đăng vào 1 tháng trước

• 3 phút đọc

🐳 Làm chủ Dockerfile: Hướng dẫn toàn diện cho người mới

Docker là một trong những công cụ thiết yếu trong DevOps và phát triển ứng dụng đám mây. Tại trung tâm của Docker là Dockerfile — một tệp văn bản đơn giản chứa các hướng dẫn để xây dựng một hình ảnh Docker.

Hướng dẫn này sẽ đưa bạn qua mọi thứ bạn cần biết về Dockerfiles, từ cơ bản đến những thực tiễn tốt nhất.


📦 Dockerfile là gì?

Dockerfile giống như một công thức nấu ăn 🧑‍🍳.

  • Mỗi dòng là một hướng dẫn.
  • Docker xử lý nó từ trên xuống dưới.
  • Kết quả là một hình ảnh Docker, mà bạn có thể chạy như một container.

Luồng:
Dockerfile ➝ Docker Image ➝ Container


🛠️ Cấu trúc cơ bản của Dockerfile

Dưới đây là một mẫu:

dockerfile Copy
FROM <base-image>
WORKDIR <directory>
COPY <src> <dest>
RUN <command>
CMD ["executable", "param1", "param2"]

🔑 Giải thích các hướng dẫn chính

1. FROM

Thiết lập hình ảnh cơ sở để bắt đầu.

dockerfile Copy
FROM python:3.9-slim

👉 Mỗi Dockerfile phải bắt đầu với một hình ảnh cơ sở (trừ khi bạn xây dựng hoàn toàn từ đầu).


2. WORKDIR

Xác định thư mục làm việc bên trong container.

dockerfile Copy
WORKDIR /app

3. COPY

Sao chép các tệp từ máy tính của bạn vào container.

dockerfile Copy
COPY requirements.txt .
COPY . .

4. RUN

Thực thi các lệnh tại thời điểm xây dựng.

dockerfile Copy
RUN pip install -r requirements.txt

5. CMD

Xác định lệnh mặc định để chạy khi container khởi động.

dockerfile Copy
CMD ["python", "app.py"]

6. ENTRYPOINT (nâng cao)

Xác định quy trình chính của container. Không giống như CMD, nó không thể bị ghi đè dễ dàng.

dockerfile Copy
ENTRYPOINT ["python"]
CMD ["app.py"]

👉 Điều này sẽ chạy như python app.py.


7. EXPOSE

Tài liệu hóa các cổng mà container sẽ sử dụng.

dockerfile Copy
EXPOSE 5000

8. ENV

Thiết lập các biến môi trường.

dockerfile Copy
ENV APP_ENV=production

9. ARG

Thiết lập các biến thời gian xây dựng.

dockerfile Copy
ARG VERSION=1.0

📄 Ví dụ đầy đủ: Ứng dụng Python Flask

dockerfile Copy
# Bước 1: Bắt đầu từ hình ảnh cơ sở
FROM python:3.9-slim

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

# Bước 3: Sao chép yêu cầu và cài đặt phụ thuộc
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

# Bước 4: Sao chép phần còn lại của mã
COPY . .

# Bước 5: Mở cổng
EXPOSE 5000

# Bước 6: Lệnh mặc định
CMD ["python", "app.py"]

⚡ Xây dựng và Chạy

bash Copy
# Xây dựng hình ảnh
docker build -t myapp:1.0 .

# Chạy container
docker run -p 5000:5000 myapp:1.0

Bây giờ mở 👉 http://localhost:5000


📸 Tổng quan hình ảnh

Dockerfile ➝ Hình ảnh ➝ Container


✅ Thực tiễn tốt nhất

  • Sử dụng hình ảnh cơ sở nhẹ (ví dụ: alpine, slim).
  • Luôn sử dụng tệp .dockerignore để tránh sao chép các tệp không cần thiết.
  • Kết hợp các lệnh để giảm số lượng lớp:
dockerfile Copy
RUN apt-get update && apt-get install -y curl
  • Ghi chú phiên bản của các phụ thuộc để đảm bảo tính tái lập.
  • Sử dụng xây dựng nhiều giai đoạn để giữ cho hình ảnh nhỏ:
dockerfile Copy
FROM golang:1.18 as builder
WORKDIR /src
COPY . .
RUN go build -o app

FROM alpine:3.16
COPY --from=builder /src/app /app
CMD ["/app"]

🚀 Kết luận

Một Dockerfile là bản thiết kế cho ứng dụng containerized của bạn. Với một vài hướng dẫn đơn giản, bạn có thể đóng gói mã của mình và chạy nó ở bất kỳ đâu.

Trong các bài viết tiếp theo, chúng ta sẽ khám phá xây dựng nhiều giai đoạn, caching, và các thực tiễn bảo mật tốt nhất cho Dockerfiles.


💡 Câu hỏi cho bạn:
👉 Phần khó khăn nhất bạn gặp phải khi viết Dockerfile đầu tiên là gì? Hãy để lại ý kiến của bạn trong phần bình luận 👇

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào