¶
Docker Usage Guide¶
Truy cập vào container
Truy cập container với bash¶
docker exec -it <container_id> bash
Truy cập container với sh¶
# Truy cập container với sh (cho Alpine Linux)
docker exec -it <container_id> /bin/sh
Reset containers and Cleanup Commands
Restart tất cả containers đang chạy¶
# Cách reset tất cả container đang chạy
docker restart $(docker ps -q)
Xóa tất cả dữ liệu Docker¶
# Xóa tất cả: containers, images, volumes, networks
docker system prune -a --volumes
Xóa containers và images¶
# Xóa tất cả containers (bao gồm đang chạy)
sudo docker rm -f $(sudo docker ps -aq)
# Xóa tất cả images
sudo docker rmi -f $(sudo docker images -aq)
Xóa logs Docker¶
# Xóa tất cả log files của containers
sudo sh -c "truncate -s 0 /var/lib/docker/containers/*/*-json.log"
Build và Run
Build Docker image¶
# Build với Dockerfile tùy chỉnh
docker build -t antoree-v2-api -f prod.Dockerfile .
# Build với tên image tùy chỉnh
docker build -t <image_name> -f <dockerfile_name> .
Run container với port mapping¶
# Run container với port mapping và tên container
docker run -p 5778:80 --name com-v2-2 -d abc/php-7.4
# Cú pháp chung
docker run -p <host_port>:<container_port> --name <container_name> <image_name>
Các options run phổ biến¶
# Run container trong background
docker run -d <image_name>
# Run container với environment variables
docker run -e ENV_VAR=value <image_name>
# Run container với volume mount
docker run -v /host/path:/container/path <image_name>
# Run container với network
docker run --network <network_name> <image_name>
Setting Docker on Ubuntu¶
Setup Docker on Ubuntu
Bước 1: Cập nhật hệ thống¶
sudo apt-get update
Bước 2: Cài đặt các gói cần thiết¶
sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release
Bước 3: Thêm Docker GPG key¶
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
Bước 4: Thêm Docker repository¶
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Bước 5: Cài đặt Docker¶
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
# Kiểm tra version
docker --version
Bước 6: Cấu hình user permissions¶
# Thêm user vào group docker
sudo usermod -aG docker $USER
# Apply group changes
newgrp docker
Restart Required
Sau khi thêm user vào docker group, bạn cần logout/login lại hoặc restart để áp dụng thay đổi.
Useful Docker Commands
Monitoring¶
# Xem containers đang chạy
docker ps
# Xem tất cả containers
docker ps -a
# Xem images
docker images
# Xem logs của container
docker logs <container_id>
# Theo dõi logs real-time
docker logs -f <container_id>
System Information¶
# Xem thông tin hệ thống Docker
docker system df
# Xem thông tin chi tiết container
docker inspect <container_id>
# Xem stats của containers
docker stats
Network Management¶
# Xem networks
docker network ls
# Tạo network
docker network create <network_name>
# Xóa network
docker network rm <network_name>
Volume Management¶
# Xem volumes
docker volume ls
# Tạo volume
docker volume create <volume_name>
# Xóa volume
docker volume rm <volume_name>
# Xóa tất cả volumes không sử dụng
docker volume prune
Docker Best Practices
- Multi-stage builds: Sử dụng multi-stage để giảm kích thước image
- Base images: Chọn base image nhỏ gọn như Alpine Linux
- Layer caching: Sắp xếp lệnh trong Dockerfile để tối ưu cache
- Health checks: Thêm health check cho containers
- Resource limits: Đặt giới hạn CPU và memory
- Security: Không chạy containers với root user
- Cleanup: Thường xuyên cleanup unused resources
Example Dockerfile
# Multi-stage build example
FROM node:alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
FROM node:alpine AS production
WORKDIR /app
COPY --from=builder /app/node_modules ./node_modules
COPY . .
EXPOSE 3000
USER node
CMD ["node", "server.js"]
Troubleshooting
Common Issues¶
# Permission denied
sudo docker run hello-world
# Container exits immediately
docker run -it <image_name> /bin/bash
# Port already in use
docker ps | grep <port>
# Disk space issues
docker system df
docker system prune