🚀 Ngày 7 trong hành trình DevOps: Những điều cơ bản về Docker
Xin chào cộng đồng dev.to! 👋 Hôm qua, tôi đã khám phá các dịch vụ Linux và Systemd — nền tảng của quản lý quy trình. Hôm nay, tôi sẽ đi sâu vào Docker — phép màu đứng sau công nghệ container hiện đại. 🐳
🔹 Tại sao Docker quan trọng trong DevOps
- Môi trường nhất quán: “Chạy trên máy của tôi” → không còn nữa!
- Container nhẹ thay thế cho máy ảo nặng nề.
- Là tiêu chuẩn để chạy ứng dụng trong các pipeline CI/CD.
- Nền tảng cho Kubernetes và các hệ thống cloud-native.
🧠 Những khái niệm cốt lõi tôi đang học
⚙️ Docker là gì?
Docker là một nền tảng container hóa, đóng gói các ứng dụng cùng với các phụ thuộc của chúng.
- Container chia sẻ kernel của hệ điều hành máy chủ nhưng vẫn giữ sự tách biệt.
📦 Docker Images & Containers
- Image = bản thiết kế (ví dụ:
nginx:latest). - Container = phiên bản đang chạy của một image.
🔧 Các lệnh cơ bản của Docker
- Chạy một container:
bash
docker run -it ubuntu bash - Liệt kê các container:
bash
docker ps -a - Dừng và xóa container:
bash
docker stop <container_id> docker rm <container_id> - Kéo một image:
bash
docker pull nginx - Xây dựng một image:
bash
docker build -t myapp .
🗂️ Volumes & Port Mapping
- Volumes giữ dữ liệu lâu dài →
docker run -v /data:/var/lib/mysql mysql - Ports phơi bày các dịch vụ →
docker run -p 8080:80 nginx
🛠️ Các trường hợp sử dụng mini cho DevOps
- Chạy Jenkins, Nginx hoặc Redis trong các container.
- Kiểm tra ứng dụng trong các môi trường tách biệt.
- Đóng gói các pipeline CI/CD thành các images tái sử dụng.
⚡ Mẹo chuyên nghiệp
Nếu một container gặp lỗi:
- Kiểm tra nhật ký →
docker logs <container_id> - Kiểm tra cấu hình →
docker inspect <container_id> - Vào trong container →
docker exec -it <container_id> bash
🧪 Phòng thí nghiệm thực hành (thử ngay!)
Chạy một container Nginx:
bash
docker run -d -p 8080:80 nginx
Xác minh:
Mở trình duyệt và truy cập → http://localhost:8080
🎯 Bạn sẽ thấy trang chào mừng của Nginx trong một container! 🚀
🎯 Bài học chính
Docker là nền tảng của DevOps — giúp các ứng dụng trở nên di động, nhẹ và sẵn sàng cho sản xuất. Làm chủ Docker là bước đầu tiên để tiến tới Kubernetes.
🔜 Ngày mai (Ngày 8)
Tôi sẽ khám phá Docker Networking và Volumes — kết nối các container và giữ dữ liệu.
Các thực tiễn tốt nhất trong việc sử dụng Docker
- Tối ưu hóa kích thước image: Luôn bắt đầu với các image gốc nhỏ nhất có thể.
- Sử dụng multi-stage builds: Giảm thiểu kích thước image cuối cùng bằng cách chỉ đưa vào những gì cần thiết.
- Quản lý phiên bản images: Đặt tên cho image theo phiên bản để dễ dàng quay lại.
Cạm bẫy thường gặp
- Container bị dừng: Đảm bảo rằng bạn đã cấu hình đúng các lệnh khởi động.
- Vấn đề với mạng: Kiểm tra cấu hình mạng nếu container không thể kết nối.
Mẹo hiệu suất
- Sử dụng cache: Docker hỗ trợ cache layers, giúp tăng tốc độ build.
- Giám sát tài nguyên: Sử dụng các công cụ như
docker statsđể theo dõi hiệu suất container.
Khắc phục sự cố
- Container không khởi động: Kiểm tra nhật ký và cấu hình.
- Lỗi kết nối mạng: Đảm bảo rằng các port đã được cấu hình đúng và không bị chiếm dụng.
Câu hỏi thường gặp (FAQ)
Docker có an toàn không?
Docker an toàn nếu bạn sử dụng images từ các nguồn đáng tin cậy và thường xuyên cập nhật.
Làm thế nào để xóa một image?
Sử dụng lệnh docker rmi <image_id> để xóa một image không còn cần thiết.
Tài nguyên và tài liệu tham khảo
Hy vọng nội dung này hữu ích cho bạn trong hành trình làm chủ Docker và DevOps!