Cơ bảnKiến thức cơ bản

Docker là gì? Hướng dẫn Docker cơ bản cho người mới bắt đầu

8 phút đọc0 lượt xem
#docker#container#devops

Docker là gì?

Bạn đã bao giờ gặp tình huống: code chạy ngon trên máy mình nhưng khi lên máy đồng nghiệp hoặc server lại bị lỗi? Đây là vấn đề kinh điển trong phát triển phần mềm — và Docker ra đời để giải quyết chính xác vấn đề này.

Docker là nền tảng cho phép bạn đóng gói ứng dụng cùng toàn bộ môi trường cần thiết (thư viện, cấu hình, dependencies) vào một container. Container này có thể chạy giống hệt nhau trên bất kỳ máy nào — máy Windows, macOS, Linux, hay server cloud.

Docker được tạo ra năm 2013 và hiện đã trở thành công cụ tiêu chuẩn trong ngành DevOps và phát triển phần mềm hiện đại.

Container vs Virtual Machine

Nhiều người nhầm lẫn Docker container với Virtual Machine (VM). Đây là điểm khác biệt quan trọng:

  • Virtual Machine (VM): mô phỏng toàn bộ máy tính, có hệ điều hành riêng, nặng (vài GB), khởi động mất vài phút
  • Container: chia sẻ kernel của hệ điều hành host, nhẹ (vài MB đến vài trăm MB), khởi động trong vài giây
Tiêu chíContainerVirtual Machine
Kích thướcVài MB - vài trăm MBVài GB
Thời gian khởi độngVài giâyVài phút
Tài nguyên CPU/RAMThấpCao
Cách lyChia sẻ kernel OSHoàn toàn cách ly
Phù hợp choMicroservices, DevOpsChạy OS khác nhau

Tóm lại: Container giống như phòng khách sạn (cùng chia sẻ hạ tầng tòa nhà), còn VM giống như căn hộ độc lập (mỗi nơi có hệ thống riêng).

Các khái niệm cơ bản trong Docker

Image — Bản thiết kế

Image là bản thiết kế (blueprint) để tạo container. Giống như công thức nấu ăn — từ một công thức bạn có thể nấu nhiều lần. Image là read-only và được lưu trữ trên Docker Hub hoặc registry riêng.

Container — Phiên bản đang chạy

Container là một instance đang chạy của image. Từ cùng một image, bạn có thể tạo nhiều container chạy song song. Container là writable — bạn có thể thay đổi dữ liệu bên trong khi nó đang chạy.

Dockerfile — Công thức tạo Image

Dockerfile là file văn bản chứa các lệnh để tạo ra một image. Bạn định nghĩa: dùng base image nào, copy file nào, chạy lệnh gì, expose port nào...

Docker Hub — Kho lưu Image

Docker Hub là registry công khai (giống như GitHub nhưng cho Docker images). Bạn có thể tải về các image có sẵn: nginx, node, python, mysql... hoặc đẩy image của mình lên để chia sẻ.

Cài đặt Docker

Cách đơn giản nhất là cài Docker Desktop:

  • Windows: tải Docker Desktop tại docker.com, cài đặt, khởi động lại máy
  • macOS: tải Docker Desktop .dmg và cài đặt bình thường
  • Linux: cài Docker Engine qua package manager

Sau khi cài, kiểm tra:

docker --version
# Docker version 24.0.0, build abcdef

Các lệnh Docker cơ bản

# Tải image từ Docker Hub
docker pull nginx

# Chạy container (nginx web server)
# -d: chạy nền (detached), -p 8080:80: ánh xạ port
docker run -d -p 8080:80 nginx

# Xem các container đang chạy
docker ps

# Xem tất cả container (kể cả đã dừng)
docker ps -a

# Dừng container
docker stop <container_id>

# Xóa container
docker rm <container_id>

# Xem danh sách image trên máy
docker images

# Xem log của container
docker logs <container_id>

Sau khi chạy lệnh docker run -d -p 8080:80 nginx, mở trình duyệt và truy cập http://localhost:8080 — bạn sẽ thấy trang chào mừng của Nginx!

Tạo Dockerfile đầu tiên

Giả sử bạn có một ứng dụng Node.js đơn giản. Đây là cách tạo Dockerfile:

# Bắt đầu từ image Node.js 18 (phiên bản Alpine — nhỏ gọn)
FROM node:18-alpine

# Thiết lập thư mục làm việc trong container
WORKDIR /app

# Copy file package.json trước (tận dụng Docker cache)
COPY package*.json ./

# Cài đặt dependencies
RUN npm install

# Copy toàn bộ source code
COPY . .

# Expose port 3000
EXPOSE 3000

# Lệnh chạy khi container khởi động
CMD ["node", "server.js"]

Build image và chạy container:

# Build image với tên my-node-app
docker build -t my-node-app .

# Chạy container
docker run -p 3000:3000 my-node-app

# Mở http://localhost:3000 trong trình duyệt

Tổng kết

Docker giải quyết bài toán "chạy được trên máy mình" bằng cách đóng gói ứng dụng vào container nhất quán. Những điểm cần nhớ:

  • Image = bản thiết kế; Container = instance đang chạy
  • Dockerfile = công thức tạo image
  • Container nhẹ và nhanh hơn VM rất nhiều
  • Docker Hub có sẵn hàng nghìn image để dùng ngay

Docker là kỹ năng bắt buộc nếu bạn muốn trở thành Backend Developer hoặc DevOps Engineer. Xem thêm: Lộ trình Backend Developer 2026

Về tác giả

Ảnh đại diện tác giả Kenji — họa tiết hình học

Kenji

Kỹ sư phần mềm full-stack (Web), hơn 5 năm kinh nghiệm thực tế

  • Python
  • DB
  • Hạ tầng
  • Đào tạo & cố vấn
  • AI

Làm việc cùng đồng nghiệp người Việt, tôi thấy thiếu tài liệu kỹ thuật rõ ràng bằng tiếng Việt. codeahoc là nơi tôi chia sẻ theo hướng thực tế, dễ áp dụng.

Nguyên tắc nội dung

  • Ưu tiên nguồn gốc và góc nhìn từ thực tế triển khai.
  • Nếu có sai sót, nội dung sẽ được cập nhật và sửa kịp thời.

Khóa học liên quan

The Complete Web Developer Bootcamp

Học HTML, CSS, JavaScript, React, Node.js toàn diện.

4.7499.000 ₫
Xem khóa học →

CSS - The Complete Guide (incl. Flexbox, Grid & Sass)

CSS nâng cao: Flexbox, Grid, animations, responsive design.

4.6499.000 ₫
Xem khóa học →