Tài liệu tham khảo Docker: Hướng dẫn nhanh cho lập trình viên
Giới thiệu
Docker là một nền tảng container hóa cho phép bạn đóng gói các ứng dụng và các phụ thuộc của chúng vào các container nhẹ và di động. Bài viết này cung cấp một tài liệu tham khảo nhanh chóng giúp bạn bắt đầu và làm việc hiệu quả với Docker.
1. Cơ bản về Docker
Kiểm tra phiên bản Docker
Để kiểm tra phiên bản Docker đang cài đặt, bạn có thể sử dụng lệnh sau:
docker --version
Liệt kê các container đang chạy
Để xem danh sách các container đang chạy, sử dụng lệnh:
docker ps
Liệt kê tất cả các container (đang chạy + đã dừng)
Để liệt kê tất cả các container, bạn có thể sử dụng lệnh:
docker ps -a
Liệt kê tất cả các hình ảnh
Nếu bạn muốn xem tất cả các hình ảnh đã tải về, sử dụng:
docker images
Dừng một container
Để dừng một container đang chạy, sử dụng lệnh sau:
docker stop <container_id>
Xóa một container
Để xóa một container, bạn có thể sử dụng lệnh:
docker rm <container_id>
Xóa một hình ảnh
Để xóa một hình ảnh, lệnh sẽ là:
docker rmi <image_name>
2. Làm việc với Hình ảnh
Kéo một hình ảnh từ Docker Hub
Để tải một hình ảnh từ Docker Hub, sử dụng lệnh:
docker pull <image_name>:<tag>
Xây dựng một hình ảnh từ Dockerfile
Nếu bạn muốn xây dựng một hình ảnh từ Dockerfile, hãy sử dụng:
docker build -t <image_name>:<tag> .
Chạy một container từ một hình ảnh
Để chạy một container từ một hình ảnh, thực hiện:
docker run -d --name <container_name> <image_name>:<tag>
Chạy container với ánh xạ cổng
Nếu bạn cần ánh xạ cổng, hãy sử dụng lệnh:
docker run -d -p 8080:80 <image_name>
3. Các yếu tố cơ bản của Dockerfile
Cấu trúc cơ bản của Dockerfile
Dưới đây là một ví dụ về cấu trúc cơ bản của Dockerfile:
# Sử dụng hình ảnh cơ sở
FROM node:18
# Thiết lập thư mục làm việc
WORKDIR /app
# Sao chép các file package và cài đặt phụ thuộc
COPY package*.json ./
RUN npm install
# Sao chép mã nguồn ứng dụng
COPY . .
# Mở cổng và khởi động ứng dụng
EXPOSE 3000
CMD ["node", "index.js"]
4. Cơ bản về Docker Compose
Ví dụ docker-compose.yml cho Node.js + MongoDB
Dưới đây là một ví dụ về tệp docker-compose.yml:
version: '3'
services:
app:
build: .
ports:
- "3000:3000"
volumes:
- .:/app
depends_on:
- mongo
mongo:
image: mongo:6
ports:
- "27017:27017"
Các lệnh hữu ích
Một số lệnh bạn có thể sử dụng với Docker Compose bao gồm:
docker-compose up # Khởi động tất cả các dịch vụ
docker-compose down # Dừng tất cả các dịch vụ
docker-compose logs -f # Theo dõi logs
5. Các lệnh Docker hữu ích
Xem logs của container
Để xem logs của một container, sử dụng lệnh:
docker logs -f <container_id>
Thực thi một lệnh trong container đang chạy
Nếu bạn cần thực thi một lệnh trong một container đang chạy, sử dụng:
docker exec -it <container_id> bash
Xóa tất cả các container đã dừng
Để xóa tất cả các container đã dừng, bạn có thể sử dụng:
docker container prune
Xóa hình ảnh không sử dụng
Để xóa hình ảnh không còn sử dụng, lệnh sẽ là:
docker image prune -a
Thực hành tốt nhất khi làm việc với Docker
- Thường xuyên cập nhật Docker: Đảm bảo bạn luôn sử dụng phiên bản Docker mới nhất để có những tính năng và sửa lỗi mới.
- Sử dụng Docker Compose cho các ứng dụng phức tạp: Khi làm việc với nhiều dịch vụ, hãy sử dụng Docker Compose để quản lý chúng dễ dàng hơn.
- Tối ưu hóa Dockerfile: Giảm thiểu số lượng layer bằng cách gộp các lệnh RUN và sử dụng cache có sẵn.
- Theo dõi và phân tích logs: Sử dụng các công cụ như ELK stack để theo dõi và phân tích logs của các container.
Những cạm bẫy thường gặp
- Không xóa các container và hình ảnh không cần thiết: Điều này có thể dẫn đến việc chiếm dụng không gian ổ đĩa.
- Không thiết lập đúng quyền truy cập: Đảm bảo rằng các container có quyền truy cập đúng vào các tài nguyên cần thiết.
Mẹo hiệu suất
- Sử dụng multi-stage builds: Giúp giảm kích thước hình ảnh cuối cùng bằng cách chỉ sao chép những gì cần thiết.
- Sử dụng volumes: Giúp tối ưu hóa hiệu suất cho các ứng dụng cần lưu trữ dữ liệu.
Giải quyết sự cố
- Container không khởi động: Kiểm tra logs để tìm hiểu nguyên nhân bằng lệnh
docker logs -f <container_id>. - Lỗi cổng bị chiếm dụng: Đảm bảo rằng cổng mà bạn đang cố gắng ánh xạ không bị chiếm dụng bởi một ứng dụng khác.
Kết luận
Docker giúp đơn giản hóa việc triển khai, đảm bảo tính nhất quán và làm cho việc mở rộng trở nên dễ dàng hơn. Hãy giữ tài liệu tham khảo này bên mình trong quá trình phát triển và thử nghiệm với các container. Nếu bạn có bất kỳ câu hỏi nào hoặc cần hỗ trợ thêm, hãy tham gia cộng đồng Docker để nhận được sự giúp đỡ từ những lập trình viên khác.
Câu hỏi thường gặp (FAQ)
1. Docker là gì?
Docker là một nền tảng cho phép bạn chạy các ứng dụng trong các container độc lập và nhẹ nhàng.
2. Tôi có thể sử dụng Docker cho ứng dụng nào?
Docker có thể được sử dụng cho hầu hết mọi loại ứng dụng, bao gồm Node.js, Python, Java, và nhiều hơn nữa.
3. Có cần phải học nhiều để sử dụng Docker không?
Docker có thể có một chút đường cong học tập, nhưng với tài liệu tham khảo này, bạn có thể nhanh chóng làm quen với các lệnh cơ bản.
4. Docker và ảo hóa có gì khác nhau?
Docker sử dụng container để chạy ứng dụng, trong khi ảo hóa sử dụng máy ảo, điều này làm cho Docker nhẹ hơn và nhanh hơn.
Tài nguyên tham khảo
Hãy bắt đầu hành trình khám phá Docker ngay hôm nay!