Bỏ qua

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