Giới thiệu
Chào cộng đồng dev.to! 👋 Hôm qua, tôi đã khám phá GitHub Actions, công cụ CI/CD bản địa của GitHub giúp tự động hóa quy trình phát triển. Ngày hôm nay, tôi sẽ đi sâu vào Docker, nền tảng của việc container hóa trong DevOps.
Tại Sao Docker Quan Trọng?
Trước khi có Docker, các ứng dụng thường gặp phải vấn đề “chạy trên máy tôi nhưng không chạy trên máy khác”. Docker giải quyết vấn đề này bằng cách đóng gói ứng dụng cùng với tất cả các phụ thuộc vào trong các container di động.
Lợi Ích Của Docker
- Môi trường nhất quán: Đảm bảo môi trường phát triển, kiểm thử và sản xuất giống nhau.
- Nhẹ và nhanh hơn máy ảo: Giúp tiết kiệm tài nguyên hệ thống.
- Dễ dàng mở rộng: Kết hợp với các công cụ quản lý như Kubernetes.
- Hệ sinh thái lớn: Có sẵn nhiều hình ảnh trên Docker Hub.
Các Khái Niệm Cơ Bản Trong Docker
- Image: Bản thiết kế của ứng dụng (được xây dựng từ Dockerfile).
- Container: Phiên bản đang chạy của một image.
- Dockerfile: Hướng dẫn để xây dựng một image.
- Registry: Nơi lưu trữ các image (Docker Hub, ECR, GCR).
- Volume: Lưu trữ bền vững cho các container.
- Network: Kết nối giữa các container.
Ví Dụ: Một Dockerfile Đơn Giản
Dockerfile
# Sử dụng hình ảnh Node.js làm cơ sở
FROM node:18
# Đặt thư mục làm việc
WORKDIR /app
# Sao chép các tệp package và cài đặt phụ thuộc
COPY package\*.json ./
RUN npm install
# Sao chép mã nguồn
COPY . .
# Mở cổng ứng dụng
EXPOSE 3000
# Khởi động ứng dụng
CMD ["npm", "start"]
Cách Xây Dựng và Chạy Ứng Dụng
Chạy các lệnh sau trong terminal:
bash
docker build -t myapp .
docker run -p 3000:3000 myapp
Trường Hợp Sử Dụng DevOps
- Đóng gói ứng dụng cho các pipeline CI/CD.
- Triển khai microservices trên Kubernetes hoặc ECS.
- Tạo môi trường có thể tái tạo cho việc kiểm thử.
- Chạy quét bảo mật (ví dụ: Trivy) trên các hình ảnh container.
Mẹo Chuyên Nghiệp
- Giữ hình ảnh nhỏ: Sử dụng hình ảnh slim/alpine.
- Sử dụng .dockerignore: Tránh các tệp không cần thiết trong các bản build.
- Gán tag cho hình ảnh hợp lý: Ví dụ: myapp:v1.0.0.
- Quét hình ảnh tìm lỗ hổng trước khi đẩy lên registry.
Thực Hành Mini-Lab (Hãy Thử Ngay!)
- Cài đặt Docker Desktop.
- Viết một Dockerfile cho ứng dụng của bạn.
- Xây dựng và chạy hình ảnh trên máy tính cá nhân.
- Đẩy nó lên Docker Hub bằng lệnh
docker push.
Kết Luận
Docker giúp các ứng dụng trở nên di động, có thể mở rộng và dễ dàng quản lý — một kỹ năng cốt lõi cho mọi kỹ sư DevOps.
Câu Hỏi Thường Gặp (FAQ)
Docker là gì?
Docker là một nền tảng để phát triển, vận chuyển và chạy các ứng dụng trong các container.
Lợi ích của việc sử dụng Docker là gì?
Docker giúp đảm bảo tính nhất quán giữa các môi trường phát triển, kiểm thử và sản xuất, đồng thời tiết kiệm tài nguyên hệ thống.
Tài Nguyên Đọc Thêm
🔜 Ngày mai (Ngày 21): Tôi sẽ khám phá Kubernetes — lớp quản lý giúp Docker đạt quy mô sản xuất.