Docker cơ bản - Hướng dẫn thực tế cho người mới bắt đầu
Tìm hiểu các khái niệm nền tảng của Docker như container, image và cách chạy ứng dụng đầu tiên của bạn với Docker.
Giới thiệu
Docker đã trở thành một công cụ gần như tiêu chuẩn trong phát triển phần mềm hiện đại. Nó giúp lập trình viên đóng gói ứng dụng cùng toàn bộ dependency vào container, từ đó đảm bảo tính nhất quán giữa các môi trường.
Dù bạn đang xây dựng hệ thống microservices hay chỉ đơn giản là deploy một ứng dụng nhỏ, việc hiểu những kiến thức nền tảng về Docker là rất cần thiết.
Docker là gì?
Docker là một nền tảng cho phép bạn:
- Đóng gói ứng dụng vào container
- Chạy ứng dụng nhất quán trên nhiều môi trường khác nhau
- Đơn giản hóa việc triển khai và mở rộng hệ thống
Bạn có thể hình dung Docker như một dạng máy ảo gọn nhẹ hơn, nhưng nhanh và hiệu quả hơn nhiều.
Các khái niệm quan trọng
1. Container
Container là một gói độc lập, nhẹ và có thể chạy được, bao gồm:
- Mã nguồn ứng dụng
- Runtime
- Thư viện
- Dependencies
Container sẽ chạy theo cùng một cách ở mọi môi trường.
2. Image
Image là bản mẫu để tạo ra container.
- Chỉ đọc
- Được build từ
Dockerfile - Có thể chia sẻ qua Docker Hub
3. Dockerfile
Dockerfile là file mô tả cách tạo ra một image.
Ví dụ:
FROM node:18
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
CMD ["node", "index.js"]
4. Docker Hub
Docker Hub là registry công khai nơi bạn có thể:
- Kéo các image có sẵn
- Đẩy image của chính mình lên
Ví dụ:
docker pull nginx
Các lệnh Docker cơ bản
Kiểm tra phiên bản Docker
docker --version
Kéo một image
docker pull nginx
Chạy một container
docker run -d -p 8080:80 nginx
Truy cập tại: http://localhost:8080
Liệt kê các container đang chạy
docker ps
Dừng một container
docker stop <container_id>
Tự build và chạy ứng dụng của bạn
Bước 1: Tạo một ứng dụng Node.js đơn giản
// index.js
const http = require('http');
http
.createServer((req, res) => {
res.end('Hello from Docker!');
})
.listen(3000);
Bước 2: Tạo Dockerfile
FROM node:18
WORKDIR /app
COPY . .
CMD ["node", "index.js"]
Bước 3: Build image
docker build -t my-app .
Bước 4: Chạy container
docker run -p 3000:3000 my-app
Mở tại: http://localhost:3000
Vì sao Docker quan trọng?
Tính nhất quán
Ứng dụng sẽ chạy giống nhau ở:
- Máy local
- Pipeline CI/CD
- Môi trường production
Tính cô lập
Mỗi container chạy độc lập:
- Không xung đột dependency
- Môi trường sạch hơn, dễ kiểm soát hơn
Khả năng mở rộng
Bạn có thể mở rộng dịch vụ dễ dàng với:
- Docker Compose
- Kubernetes
Các trường hợp sử dụng phổ biến
- Kiến trúc microservices
- Pipeline CI/CD
- Môi trường phát triển local
- Triển khai lên cloud
Các thực hành tốt
- Giữ image nhỏ nhất có thể, ví dụ dùng base image
alpine - Sử dụng
.dockerignore - Tránh chạy container bằng user
root - Dùng multi-stage build cho production
Kết luận
Docker giúp đơn giản hóa cách chúng ta build, đóng gói và chạy ứng dụng.
Khi nắm vững những phần cơ bản như:
- Image
- Container
- Dockerfile
- Các lệnh thường dùng
thì bạn đã sở hữu một công cụ rất mạnh cho workflow phát triển phần mềm hiện đại.
Support My Work
If you've enjoyed my content and found it helpful, consider buying me a coffee. It keeps me caffeinated and creating!