Các thành phần cơ bản của Docker

Các thành phần cơ bản của Docker

Vấn đề

Docker đã trở thành một công cụ không thể thiếu trong lĩnh vực DevOps, giúp đơn giản hóa việc triển khai và quản lý ứng dụng. Trong bài viết này, chúng ta sẽ khám phá các thành phần cơ bản của Docker và cách chúng phối hợp để tạo nên sức mạnh của hệ sinh thái container.

Các thành phần cơ bản của Docker

Docker gồm các thành phần chính:

  1. Containers
  2. Images
  3. Networks
  4. Registries
  5. Dockerfile
  6. Docker Compose
  7. Docker Swarm

1. Containers

Container là môi trường độc lập, cách ly để chạy ứng dụng. Mỗi container chứa toàn bộ những gì cần thiết để ứng dụng hoạt động, như thư viện, file cấu hình, và mã nguồn.

Lệnh cơ bản để làm việc với container:

  • Tạo và chạy container:

    docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...]
  • Xem danh sách container đang chạy:

    docker ps
  • Dừng container:

    docker stop CONTAINER_ID
  • Xóa container:

    docker rm CONTAINER_ID

Ví dụ:

docker run -d --name my-nginx -p 8080:80 nginx

Lệnh trên tạo container chạy nền (detached) với tên my-nginx, ánh xạ cổng 8080 của máy chủ với cổng 80 của container.

2. Images

Image là bản mẫu (blueprint) để tạo container. Image chứa tất cả những gì container cần để hoạt động.

Lệnh cơ bản với image:

  • Tải image từ registry:

    docker pull IMAGE[:TAG]
  • Xây dựng image từ Dockerfile:

    docker build -t IMAGE_NAME[:TAG] .
  • Liệt kê các image trên máy:

    docker images
  • Xóa image:

    docker rmi IMAGE_NAME[:TAG]

3. Networks

Docker Network quản lý cách các container giao tiếp với nhau và với môi trường bên ngoài.

Loại mạng phổ biến:

  1. Bridge (mặc định):
    Kết nối các container trên cùng một host.

    docker network create my-bridge --driver bridge
  2. Host:
    Container sử dụng trực tiếp network của host.

    docker run --network host nginx
  3. Overlay:
    Kết nối các container trên nhiều host trong một cluster.

    docker network create --driver overlay my-overlay

4. Registries

Docker Registry là nơi lưu trữ các image.

  • Docker Hub (mặc định): Registry công cộng phổ biến nhất.
  • Private Registry: Bạn có thể tự cấu hình để lưu trữ image riêng tư.

Lệnh làm việc với registry:

  • Đăng nhập Docker Hub:

    docker login
  • Đẩy image lên registry:

    docker push IMAGE_NAME[:TAG]
  • Kéo image từ registry:

    docker pull IMAGE_NAME[:TAG]

5. Dockerfile

Dockerfile là file cấu hình định nghĩa cách tạo image.

Ví dụ Dockerfile cơ bản:

# Image base
FROM python:3.9-slim

# Cài đặt thư viện cần thiết
RUN apt-get update && apt-get install -y curl

# Copy mã nguồn vào container
COPY . /app

# Đặt thư mục làm việc
WORKDIR /app

# Cài đặt dependencies
RUN pip install -r requirements.txt

# Expose port
EXPOSE 5000

# Command chạy ứng dụng
CMD ["python", "app.py"]

Xây dựng image từ Dockerfile:

docker build -t my-python-app .

6. Docker Compose

Docker Compose giúp quản lý nhiều container và tài nguyên liên quan bằng file YAML.

Ví dụ file docker-compose.yml:

version: "3"
services:
  web:
    image: nginx
    ports:
      - "8080:80"
  app:
    build: .
    volumes:
      - ./app:/app
    ports:
      - "5000:5000"

Chạy ứng dụng với Docker Compose:

docker-compose up -d

7. Docker Swarm

Docker Swarm cho phép triển khai container trên nhiều host.

Các thành phần trong Docker Swarm:

  • Manager node: Quản lý cluster, phân phối workload.
  • Worker node: Thực hiện workload.

Tạo Docker Swarm:

docker swarm init

Thêm node vào cluster:

docker swarm join --token SWARM_TOKEN MANAGER_IP:2377

Tổng kết

Bài viết này đã giới thiệu về các thành phần cơ bản của Docker, bao gồm container, image, network, registry và các công cụ quản lý như Docker Compose, Docker Swarm. Việc hiểu rõ và sử dụng thành thạo các thành phần này sẽ giúp bạn tận dụng tối đa sức mạnh của Docker trong công việc.

Tài liệu tham khảo