DEV Community

duytruong09
duytruong09

Posted on

🚀 Docker Phần 1: Giới Thiệu Container, Image và Dockerfile

Docker cơ bản: Container, Image và Dockerfile

Docker đang là công cụ không thể thiếu trong hành trình phát triển và triển khai ứng dụng hiện đại. Nếu bạn vẫn còn bỡ ngỡ với các khái niệm như Container, Image hay Dockerfile, bài viết này sẽ giúp bạn hiểu rõ và sử dụng Docker hiệu quả hơn.

Docker là gì?

Docker là nền tảng giúp bạn đóng gói ứng dụng cùng toàn bộ môi trường chạy (thư viện, dependencies...) vào trong một container. Nhờ đó, ứng dụng sẽ chạy nhất quán trên mọi môi trường, từ máy tính cá nhân đến server hay cloud.

Container và Image là gì?

  • Image là bản "chụp" tĩnh của ứng dụng và môi trường chạy. Nó giống như một bản thiết kế.
  • Container là thể hiện động của image, tức là một instance đang chạy dựa trên image đó.

Bạn có thể tưởng tượng image như file cài đặt, còn container là phần mềm đang chạy trên máy bạn.

Container khác gì so với Virtual Machine (VM)?

Tiêu chí Container Virtual Machine (VM)
Hệ điều hành Chia sẻ kernel với host OS Có hệ điều hành riêng
Kích thước Nhẹ, vài MB Nặng, vài GB
Tốc độ khởi động Nhanh, vài giây Chậm, vài phút
Hiệu suất Cao, ít overhead Thấp hơn do ảo hóa toàn bộ OS

Container giúp bạn tiết kiệm tài nguyên và tăng tốc độ phát triển, đặc biệt phù hợp với microservices và môi trường cloud.

Các thành phần chính của Docker

  • Docker Client: Giao diện dòng lệnh bạn sử dụng.
  • Docker Daemon: Quản lý container và image chạy ngầm.
  • Docker Registry: Nơi lưu trữ image (ví dụ Docker Hub).

Dockerfile – “Công thức” tạo Image

Dockerfile là file cấu hình giúp bạn tự động hóa việc tạo image. Một số chỉ thị quan trọng:

  • FROM: Chọn image gốc.
  • RUN: Chạy lệnh trong quá trình build (cài đặt phần mềm...).
  • CMD: Lệnh mặc định khi container chạy.
  • ENTRYPOINT: Lệnh chính, không dễ bị ghi đè.
  • COPY / ADD: Sao chép file vào image.
  • ENV: Thiết lập biến môi trường.
  • EXPOSE: Khai báo port.
  • WORKDIR: Thư mục làm việc.
  • VOLUME: Định nghĩa vùng lưu trữ dữ liệu ngoài container.
  • USER: Chạy lệnh với user cụ thể.

Multi-stage build

Multi-stage build giúp bạn tạo image nhỏ gọn bằng cách tách build và runtime thành nhiều giai đoạn. Ví dụ, bạn có thể build ứng dụng trong một image đầy đủ công cụ, rồi chỉ copy file cần thiết sang image cuối cùng nhẹ hơn.

Top comments (0)