Docker

Docker Image and Docker Container


Khái niệmDocker ImageDocker Container
Ví dụ minh họaGiống như công thức nấu ăn (recipe)Giống như món ăn đã được nấu từ công thức.
Tính chấtLà bản mẫu (template), chứa tất cả các thông tin cần thiết.Là một thực thể đang hoạt động, được tạo ra từ image.
Trạng tháiKhông thể thay đổi sau khi đã tạo (immutable).Có thể thay đổi khi hoạt động (chạy, dừng, xóa, cập nhật dữ liệu).
Chức năngChứa mã nguồn, dependencies, file cấu hình, và môi trường.Là môi trường thực thi dựa trên image, hoạt động như một ứng dụng.
Cách tạoĐược xây dựng bằng file Dockerfile hoặc tải từ Docker Hub.Được tạo từ image bằng lệnh docker run.
Ví dụ thực tếImage chứa ứng dụng Node.js và các thư viện.Container chạy ứng dụng Node.js, cung cấp dịch vụ cho người dùng.
Đặc điểm khác biệtTĩnh, không chạy (chỉ là một file hoặc template).Linh động, chạy được và có trạng thái riêng biệt.

Tóm lại:

  • Docker Image là một mẫu hoặc bản sao chuẩn.
  • Docker Containerbản thực thi hoặc môi trường hoạt động tạo ra từ image.

Bạn cần image để tạo container, và container là nơi thực tế xảy ra hoạt động của ứng dụng.

Docker Compose

Docker Compose là một công cụ giúp bạn định nghĩa và quản lý nhiều container Docker cùng lúc bằng cách sử dụng một tệp cấu hình duy nhất, thường là docker-compose.yml. Nó đặc biệt hữu ích khi bạn có một ứng dụng phức tạp, yêu cầu nhiều container hoạt động cùng nhau (ví dụ: một ứng dụng web với server, database, và cache).

Ví dụ về tệp docker-compose.yml

version: '3.8' services: web: image: nginx:latest ports: - "8080:80" volumes: - ./html:/usr/share/nginx/html depends_on: - app app: image: python:3.9 working_dir: /app volumes: - ./app:/app command: python app.py depends_on: - db db: image: postgres:latest environment: POSTGRES_USER: user POSTGRES_PASSWORD: password POSTGRES_DB: exampledb

Phân biệt Docker Compose và Docker Image:

Đặc điểmDocker ComposeDocker Image
Chức năngLà một công cụ (hoặc file cấu hình) để quản lý nhiều container cùng lúc.Là bản mẫu (template) dùng để tạo container.
Mục đích sử dụngĐịnh nghĩa và điều phối các container chạy đồng bộ trong hệ thống.Cung cấp mã nguồn, thư viện, và môi trường cần thiết để tạo container.
Cách hoạt độngDựa trên file docker-compose.yml để định nghĩa dịch vụ.Dùng để khởi tạo container qua lệnh docker run.
Tính chấtLà công cụ hoặc file YAML, không phải một thực thể thực thi.Là một tệp không thay đổi, được lưu trữ trong registry.

Docker Compose có liên quan gì đến Docker Image?

Docker Compose sử dụng Docker Image để khởi tạo các container. Trong file docker-compose.yml, bạn phải chỉ định image cho từng container (service).

Ví dụ: Trong file dưới đây, Docker Compose tạo 3 container (web, app, db) từ các image nginx:latest, python:3.9, và postgres:latest.


services: web: image: nginx:latest app: image: python:3.9 db: image: postgres:latest

Cấu trúc của docker 
Docker sử dụng cấu trúc Client-Server. Client tương tác với Docker deamon, cái mà thực hiện nhiệm vụ nặng nề là xây dựng, chạy và phân phối các container Docker của bạn. Máy khách Docker và daemon có thể chạy trên cùng một hệ thống hoặc bạn có thể kết nối máy khách Docker với daemon Docker từ xa

Docker deamon
Dockerd lắng nghe API từ Image, Container, Volumes, Networks
Client 
Là cách thức chính để tương tác với Docker Host. Khi chạy câu lệnh như docker run thì API được gọi
Host

Registry
Là nơi lưu trữ Docker Image. DockerHub là Registry mọi người có thể sử dụng




Comments