Quay lại blog
21 tháng 3, 20263 phút đọc

Docker cơ bản - Hướng dẫn thực tế cho người mới bắt đầu

Tìm hiểu các khái niệm nền tảng của Docker như container, image và cách chạy ứng dụng đầu tiên của bạn với Docker.

DockerDockerContainersDevOpsMicroservices

Giới thiệu

Docker đã trở thành một công cụ gần như tiêu chuẩn trong phát triển phần mềm hiện đại. Nó giúp lập trình viên đóng gói ứng dụng cùng toàn bộ dependency vào container, từ đó đảm bảo tính nhất quán giữa các môi trường.

Dù bạn đang xây dựng hệ thống microservices hay chỉ đơn giản là deploy một ứng dụng nhỏ, việc hiểu những kiến thức nền tảng về Docker là rất cần thiết.


Docker là gì?

Docker là một nền tảng cho phép bạn:

  • Đóng gói ứng dụng vào container
  • Chạy ứng dụng nhất quán trên nhiều môi trường khác nhau
  • Đơn giản hóa việc triển khai và mở rộng hệ thống

Bạn có thể hình dung Docker như một dạng máy ảo gọn nhẹ hơn, nhưng nhanh và hiệu quả hơn nhiều.


Các khái niệm quan trọng

1. Container

Container là một gói độc lập, nhẹ và có thể chạy được, bao gồm:

  • Mã nguồn ứng dụng
  • Runtime
  • Thư viện
  • Dependencies

Container sẽ chạy theo cùng một cách ở mọi môi trường.

2. Image

Image là bản mẫu để tạo ra container.

  • Chỉ đọc
  • Được build từ Dockerfile
  • Có thể chia sẻ qua Docker Hub

3. Dockerfile

Dockerfile là file mô tả cách tạo ra một image.

Ví dụ:

FROM node:18

WORKDIR /app

COPY package*.json ./

RUN npm install

COPY . .

CMD ["node", "index.js"]

4. Docker Hub

Docker Hub là registry công khai nơi bạn có thể:

  • Kéo các image có sẵn
  • Đẩy image của chính mình lên

Ví dụ:

docker pull nginx

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

Kiểm tra phiên bản Docker

docker --version

Kéo một image

docker pull nginx

Chạy một container

docker run -d -p 8080:80 nginx

Truy cập tại: http://localhost:8080

Liệt kê các container đang chạy

docker ps

Dừng một container

docker stop <container_id>

Tự build và chạy ứng dụng của bạn

Bước 1: Tạo một ứng dụng Node.js đơn giản

// index.js
const http = require('http');

http
  .createServer((req, res) => {
    res.end('Hello from Docker!');
  })
  .listen(3000);

Bước 2: Tạo Dockerfile

FROM node:18

WORKDIR /app

COPY . .

CMD ["node", "index.js"]

Bước 3: Build image

docker build -t my-app .

Bước 4: Chạy container

docker run -p 3000:3000 my-app

Mở tại: http://localhost:3000


Vì sao Docker quan trọng?

Tính nhất quán

Ứng dụng sẽ chạy giống nhau ở:

  • Máy local
  • Pipeline CI/CD
  • Môi trường production

Tính cô lập

Mỗi container chạy độc lập:

  • Không xung đột dependency
  • Môi trường sạch hơn, dễ kiểm soát hơn

Khả năng mở rộng

Bạn có thể mở rộng dịch vụ dễ dàng với:

  • Docker Compose
  • Kubernetes

Các trường hợp sử dụng phổ biến

  • Kiến trúc microservices
  • Pipeline CI/CD
  • Môi trường phát triển local
  • Triển khai lên cloud

Các thực hành tốt

  • Giữ image nhỏ nhất có thể, ví dụ dùng base image alpine
  • Sử dụng .dockerignore
  • Tránh chạy container bằng user root
  • Dùng multi-stage build cho production

Kết luận

Docker giúp đơn giản hóa cách chúng ta build, đóng gói và chạy ứng dụng.

Khi nắm vững những phần cơ bản như:

  • Image
  • Container
  • Dockerfile
  • Các lệnh thường dùng

thì bạn đã sở hữu một công cụ rất mạnh cho workflow phát triển phần mềm hiện đại.

Support My Work

If you've enjoyed my content and found it helpful, consider buying me a coffee. It keeps me caffeinated and creating!