Chuyển đến nội dung chính

Docker cho người mới bắt đầu: Hướng dẫn thực hành về container

Hướng dẫn thân thiện cho người mới bắt đầu, bao quát những điều cốt yếu của container hóa, giúp bạn xây dựng, chạy và quản lý container với các ví dụ thực hành.
Đã cập nhật 5 thg 6, 2026  · 14 phút đọc

Khi tôi bắt đầu dùng Docker, tôi nhanh chóng nhận ra nó mạnh mẽ đến mức nào. Hãy tưởng tượng bạn thiết lập môi trường phát triển chỉ trong vài phút thay vì hàng giờ, hoặc chạy ứng dụng trên nhiều máy khác nhau mà không gặp vấn đề kinh điển “chạy được trên máy tôi”.

Docker đơn giản hóa cách chúng ta xây dựng, phân phối và vận hành ứng dụng bằng cách đóng gói chúng vào các container gọn nhẹ, có tính di động cao. Dù bạn là nhà phát triển, nhà khoa học dữ liệu hay quản trị hệ thống, thành thạo Docker có thể giúp bạn bớt đau đầu và tối ưu hóa quy trình làm việc.

Trong hướng dẫn này, tôi sẽ dẫn bạn qua những điều cơ bản—cài đặt Docker, hiểu các khái niệm chính và chạy ứng dụng đầu tiên trong container. Kết thúc, bạn không chỉ hiểu cách Docker hoạt động mà còn có trải nghiệm thực hành, tạo nền tảng vững chắc cho các chủ đề nâng cao. Bắt đầu thôi!

Docker là gì?

Docker là một nền tảng container hóa mã nguồn mở giúp đơn giản hóa việc triển khai ứng dụng bằng cách đóng gói phần mềm và các phụ thuộc của nó vào một đơn vị tiêu chuẩn gọi là container. Không giống máy ảo truyền thống, các container Docker chia sẻ kernel của hệ điều hành máy chủ, nhờ đó hiệu quả và nhẹ hơn.

Container đảm bảo ứng dụng chạy đồng nhất giữa môi trường phát triển, kiểm thử và sản xuất. Điều này giảm vấn đề tương thích và tăng tính di động trên nhiều nền tảng. Nhờ tính linh hoạt và khả năng mở rộng, Docker đã trở thành công cụ quan trọng trong quy trình DevOps hiện đại và phát triển cloud-native.

Logo of Docker

Logo chính thức của Docker.

Cài đặt Docker

Docker có thể được cài trên nhiều hệ điều hành, bao gồm Windows, macOS và Linux. Dù chức năng cốt lõi giống nhau trên mọi nền tảng, quy trình cài đặt có chút khác biệt tùy hệ thống. Dưới đây là hướng dẫn từng bước để cài Docker trên hệ điều hành bạn chọn.

Cài Docker trên Windows

  1. Tải Docker Desktop cho Windows.

Download Docker Desktop Installer for Windows

Tải trình cài đặt Docker Desktop cho Windows

  1. Chạy trình cài đặt và làm theo hướng dẫn.

Installing Docker Desktop for Windows

Đang cài đặt Docker Desktop cho Windows

  1. Bật tích hợp WSL 2 nếu được nhắc.
  2. Xác minh cài đặt bằng cách chạy docker –version trong PowerShell.

Checking Docker version after installation through Powershell

Kiểm tra phiên bản Docker sau khi cài đặt qua PowerShell 

5. Khởi động ứng dụng Docker Desktop từ menu chạy của bạn.

Launching Docker Desktop Application on Windows

Khởi chạy ứng dụng Docker Desktop trên Windows

Cài Docker trên macOS

  1. Tải Docker Desktop cho Mac.

Download Docker Desktop installer for Mac

Tải trình cài đặt Docker Desktop cho Mac

  1. Mở tệp .dmg đã tải và kéo Docker vào thư mục Applications.
  2. Khởi chạy Docker và hoàn tất thiết lập.
  3. Xác minh cài đặt bằng docker –version trong terminal.

Cài Docker trên Linux (Ubuntu)

  1. Cập nhật danh sách gói: sudo apt update 
  2. Cài các phụ thuộc: sudo apt install apt-transport-https ca-certificates curl software-properties-common 
  3. Thêm khóa GPG chính thức của Docker: curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - 
  4. Thêm kho Docker: sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" 
  5. Cài Docker: sudo apt install docker-ce  
  6. Xác minh cài đặt: docker –version

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

Giờ bạn đã cài Docker, có lẽ bạn muốn bắt tay ngay vào chạy container. Nhưng trước khi làm vậy, điều quan trọng là hiểu một vài khái niệm then chốt tạo nền tảng cho Docker. Những khái niệm này sẽ giúp bạn sử dụng Docker hiệu quả hơn và tránh các lỗi thường gặp của người mới.

Trọng tâm của Docker là image, đóng vai trò như bản thiết kế cho container; container, là các phiên bản đang chạy của những image đó; và Docker Hub, một kho tập trung để chia sẻ và quản lý image.

Hãy khám phá chi tiết từng khái niệm.

Docker image

Docker image là khối xây dựng cơ bản của container. Chúng là các mẫu chỉ đọc, bất biến, chứa mọi thứ cần thiết để chạy ứng dụng, bao gồm hệ điều hành, mã ứng dụng, runtime và các phụ thuộc.

Image được xây dựng bằng Dockerfile, tệp định nghĩa các chỉ dẫn để tạo image theo từng lớp.

Image có thể được lưu trữ và lấy về từ các registry như Docker Hub.

Dưới đây là một số lệnh ví dụ làm việc với image:

  • docker pull nginx: Tải image Nginx mới nhất từ Docker Hub.
  • docker images: Liệt kê tất cả image có trên máy cục bộ.
  • docker rmi nginx: Xóa một image khỏi máy cục bộ.

Docker container

Docker container là một phiên bản đang chạy của Docker image. Container cung cấp môi trường chạy cô lập để ứng dụng hoạt động mà không can thiệp lẫn nhau hoặc vào hệ thống máy chủ. Mỗi container có hệ thống tệp, mạng và không gian tiến trình riêng nhưng dùng chung kernel của máy chủ.

Container có vòng đời đơn giản gồm tạo, khởi động, dừng và xóa. Dưới đây là các lệnh quản lý container thường dùng:

  1. Tạo container: docker create hoặc docker run
  2. Khởi động container: docker start
  3. Dừng container: docker stop
  4. Khởi động lại container: docker restart
  5. Xóa container: docker rm

Hãy xem một ví dụ thực tế. Lệnh sau chạy một container Nginx ở chế độ tách nền (chạy nền), ánh xạ cổng 80 trong container sang cổng 8080 trên máy chủ:

docker run -d -p 8080:80 nginx

Sau khi chạy, Docker sẽ kéo image Nginx (nếu chưa có), tạo container và khởi động nó.

Để kiểm tra tất cả container đang chạy và đã dừng:

docker ps -a

Lệnh này hiển thị danh sách tất cả container cùng các chi tiết như trạng thái và cổng được gán.

Docker Hub

Docker Hub là dịch vụ registry trên đám mây để tìm kiếm, lưu trữ và phân phối image container. Người dùng có thể đẩy image tùy chỉnh lên Docker Hub và chia sẻ công khai hoặc riêng tư.

Một số lệnh để tương tác với Docker Hub:

  • docker login: Xác thực với Docker Hub.
  • docker push my-image: Tải lên một image tùy chỉnh lên Docker Hub.
  • docker search ubuntu: Tìm kiếm image chính thức và cộng đồng.
  • docker pull ubuntu: Tải image Ubuntu từ Docker Hub.

Mới làm quen với container hóa? Xây nền tảng vững chắc với khóa học Khái niệm Containerization và Virtualization.

Chạy Docker container đầu tiên của bạn

Giờ chúng ta đã điểm qua các khái niệm cốt lõi của Docker, đã đến lúc áp dụng! Hãy bắt đầu bằng việc chạy container đầu tiên để đảm bảo Docker đã cài đúng và hoạt động như mong đợi.

Để kiểm tra cài đặt Docker, mở PowerShell (Windows) hoặc Terminal (Mac và Linux) và chạy:

docker run hello-world

Lệnh này kéo image hello-world từ DockerHub và chạy nó trong container.

Docker hello-world image example

Ví dụ image hello-world của Docker

Bây giờ, hãy tiến thêm một bước và chạy một ứng dụng thực tế—máy chủ web Nginx. Thực thi lệnh sau:

docker run -d -p 8080:80 nginx

Lệnh trên thực hiện các việc sau:

  • Tham số -d chạy container ở chế độ tách nền, tức chạy nền.
  • Tham số -p 8080:80 ánh xạ cổng 80 trong container sang cổng 8080 trên máy cục bộ, cho phép bạn truy cập máy chủ web.

Khi lệnh chạy thành công, mở trình duyệt và truy cập: http://localhost:8080

Accessing web server at localhost:8080

Truy cập máy chủ web tại localhost:8080

Bạn sẽ thấy trang chào mừng mặc định của Nginx, xác nhận máy chủ web đang chạy trong container!

Bạn cũng sẽ thấy một container đang chạy trong Docker Desktop của mình:

Nginx container running on port 8080

Container Nginx chạy trên cổng 8080

Tự xây dựng Docker image đầu tiên

Đến giờ, chúng ta đã chạy các image dựng sẵn từ Docker Hub. Nhưng nếu bạn cần môi trường tùy chỉnh phù hợp với ứng dụng của mình thì sao? Khi đó, bạn cần tự xây dựng Docker image..

Tạo Docker image liên quan đến việc viết Dockerfile, một script tự động hóa quá trình dựng image. Điều này đảm bảo tính nhất quán và di động trên các môi trường khác nhau. Khi image được dựng, nó có thể chạy như một container để thực thi ứng dụng trong môi trường cô lập. 

Trong phần này, chúng ta sẽ học những điều cơ bản khi viết Dockerfile, dựng image tùy chỉnh và chạy nó dưới dạng container.

Những điều cơ bản về Dockerfile

Một Dockerfile là script chứa chuỗi chỉ dẫn định nghĩa cách dựng một Docker image. Nó tự động hóa quá trình tạo image, đảm bảo nhất quán giữa các môi trường. Mỗi chỉ dẫn trong Dockerfile sẽ tạo một lớp mới trong image. Dưới đây là phân tích một Dockerfile ví dụ cho ứng dụng Python Flask đơn giản:

# Base image containing Python runtime
FROM python:3.9

# Set the working directory inside the container
WORKDIR /app

# Copy the application files from the host to the container
COPY . /app

# Install the dependencies listed in requirements.txt
RUN pip install -r requirements.txt

# Define the command to run the Flask app when the container starts
CMD ["python", "app.py"]

Trong lệnh trên:

  • -v my-volume:/app/data gắn bộ nhớ my-volume vào thư mục /app/data bên trong container.
  • Mọi dữ liệu lưu ở /app/data sẽ được giữ lại ngay cả khi container dừng hoặc bị xóa.

Phân tích Dockerfile ở trên:

  • FROM python:3.9: Chỉ định image nền với Python 3.9 cài sẵn.
  • WORKDIR /app: Đặt /app làm thư mục làm việc bên trong container.
  • COPY . /app: Sao chép tất cả tệp từ thư mục hiện tại trên host vào /app trong container.
  • RUN pip install -r requirements.txt: Cài mọi phụ thuộc cần thiết bên trong container.
  • CMD ["python", "app.py"]: Định nghĩa lệnh thực thi khi container khởi động.

Dựng và chạy image

Khi đã có Dockerfile, bạn có thể dựng và chạy image bằng các lệnh sau:

Bước 1: Dựng image

docker build -t my-flask-app .

Lệnh trên:

  • Dùng thư mục hiện tại (.) làm ngữ cảnh dựng.
  • Đọc Dockerfile và thực thi các chỉ dẫn của nó.
  • Gắn thẻ (-t) image kết quả là my-flask-app.

Bước 2: Chạy image dưới dạng container

docker run -d -p 5000:5000 my-flask-app

Lệnh trên:

  • Chạy container ở chế độ tách nền (-d).
  • Ánh xạ cổng 5000 trong container sang cổng 5000 trên host (-p 5000:5000).

Khi chạy, bạn có thể truy cập ứng dụng Flask bằng cách mở http://localhost:5000 trong trình duyệt.

Docker volume và tính bền vững dữ liệu

Mặc định, dữ liệu bên trong Docker container là tạm thời—khi container dừng hoặc bị xóa, dữ liệu sẽ biến mất. Để giữ dữ liệu qua nhiều lần khởi động container và chia sẻ giữa nhiều container, Docker cung cấp volume, một cơ chế tích hợp để quản lý lưu trữ bền vững hiệu quả.

Khác với lưu dữ liệu trong hệ thống tệp của container, volume được Docker quản lý tách biệt, giúp hiệu quả, linh hoạt và dễ sao lưu hơn.

Ở phần tiếp theo, chúng ta sẽ khám phá cách tạo và sử dụng Docker volume để đảm bảo dữ liệu bền vững trong container.

Tạo và sử dụng Docker volume

Bước 1: Tạo volume

Trước khi dùng volume, chúng ta cần tạo một volume. Chạy lệnh sau:

docker volume create my-volume

Lệnh này tạo một volume có tên my-volume, được Docker quản lý tách biệt với bất kỳ container cụ thể nào.Bước 2: Dùng volume trong container

Bây giờ, hãy khởi động một container và mount volume vào trong đó:

docker run -d -v my-volume:/app/data my-app

Trong lệnh trên:

  • -v my-volume:/app/data gắn bộ nhớ my-volume vào thư mục /app/data bên trong container.
  • Mọi dữ liệu lưu ở /app/data sẽ tồn tại ngay cả khi container dừng hoặc bị xóa.

Docker Compose cho ứng dụng đa container

Đến giờ, chúng ta mới làm việc với ứng dụng đơn container, nhưng nhiều ứng dụng thực tế cần nhiều container phối hợp cùng nhau. Ví dụ, một ứng dụng web có thể cần máy chủ backend, cơ sở dữ liệu và lớp cache—mỗi thành phần chạy trong container riêng. Quản lý những container này thủ công bằng các lệnh docker run riêng lẻ có thể nhanh chóng trở nên tẻ nhạt.

Đó là lúc Docker Compose phát huy tác dụng.

Docker Compose là gì?

Docker Compose là công cụ đơn giản hóa việc quản lý ứng dụng đa container. Thay vì chạy nhiều lệnh docker run, bạn có thể định nghĩa toàn bộ stack ứng dụng bằng tệp docker-compose.yml và triển khai chỉ với một lệnh.

Viết tệp Docker Compose

Giờ, hãy tạo một ví dụ thực tế—một ứng dụng Node.js đơn giản kết nối tới cơ sở dữ liệu MongoDB. Thay vì quản lý hai container riêng rẽ, chúng ta sẽ định nghĩa chúng trong tệp docker-compose.yml.

Đây là cách chúng ta định nghĩa thiết lập đa container trong Docker Compose:

version: '3'
services:
  web:
    build: .
    ports:
      - "3000:3000"
    depends_on:
      - database
  database:
    image: mongo
    volumes:
      - db-data:/data/db
volumes:
  db-data:

Phân tích tệp trên:

  • version: '3': Chỉ định phiên bản Docker Compose.
  • services:: Định nghĩa các dịch vụ (container) riêng lẻ.
  • web:: Định nghĩa ứng dụng web Node.js.
  • database:: Định nghĩa container cơ sở dữ liệu MongoDB.
  • volumes:: Tạo một volume có tên (db-data) cho tính bền vững dữ liệu của MongoDB.

Chạy ứng dụng đa container

Khi tệp docker-compose.yml đã sẵn sàng, chúng ta có thể khởi chạy toàn bộ stack ứng dụng với một lệnh:

docker-compose up -d

Lệnh trên khởi động cả container web và database ở chế độ tách nền (-d).

Để dừng tất cả dịch vụ, dùng:

docker-compose down

Lệnh này dừng và xóa tất cả container đồng thời giữ nguyên volume và cài đặt mạng.

Những điều cơ bản về mạng trong Docker

Tới giờ, chúng ta đã tập trung vào chạy container và quản lý lưu trữ, nhưng chuyện gì xảy ra khi các container cần giao tiếp với nhau? Trong hầu hết ứng dụng thực tế, container không hoạt động biệt lập—chúng cần trao đổi dữ liệu, dù là máy chủ web nói chuyện với cơ sở dữ liệu hay các microservice tương tác lẫn nhau.

Docker cung cấp nhiều tùy chọn mạng để đáp ứng các trường hợp sử dụng khác nhau, từ mạng nội bộ cô lập tới cấu hình có thể truy cập từ bên ngoài.

Sẵn sàng nâng tầm kỹ năng Docker? Đăng ký Docker trung cấp để khám phá build đa giai đoạn, mạng nâng cao và hơn thế nữa!

Docker networking là gì?

Docker networking là tính năng tích hợp cho phép container giao tiếp với nhau, dù trên cùng một host hay trên nhiều host trong môi trường phân tán. Nó cung cấp khả năng cô lập, phân đoạn và các tùy chọn kết nối phù hợp với những kịch bản triển khai khác nhau.

Docker hỗ trợ nhiều loại mạng, mỗi loại phục vụ các mục đích khác nhau:

  • Bridge (mặc định): Các container trên cùng một host giao tiếp qua mạng ảo nội bộ. Mỗi container nhận địa chỉ IP riêng trong mạng bridge và có thể gọi nhau qua tên container.
    • Ví dụ: docker network create my-bridge-network
    • Phù hợp khi chạy nhiều container trên một host cần giao tiếp an toàn mà không phơi bày dịch vụ ra ngoài.
  • Host: Container chia sẻ ngăn xếp mạng của host và trực tiếp dùng địa chỉ IP, cổng của host.
    • Ví dụ: docker run --network host nginx
    • Hữu ích khi cần hiệu năng cao và không yêu cầu cô lập mạng, như chạy agent giám sát hoặc ứng dụng độ trễ thấp.
  • Overlay: Cho phép container trên các host khác nhau giao tiếp bằng cách tạo mạng phân tán.
    • Ví dụ: docker network create --driver overlay my-overlay-network
    • Thiết kế cho các triển khai điều phối như Docker Swarm, nơi dịch vụ trải rộng trên nhiều nút.
  • Macvlan: Gán địa chỉ MAC riêng cho từng container, khiến nó xuất hiện như một thiết bị vật lý trên mạng.
    • Ví dụ: docker network create -d macvlan --subnet=192.168.1.0/24 my-macvlan
    • Dùng khi container cần truy cập mạng trực tiếp, như tích hợp hệ thống cũ hoặc tương tác với mạng vật lý.

Chạy container trên mạng tùy chỉnh

Hãy đi qua cách thiết lập và dùng mạng bridge tùy chỉnh để các container giao tiếp.

Bước 1: Tạo mạng tùy chỉnh

Trước khi chạy container, đầu tiên chúng ta tạo một mạng riêng:

docker network create my-custom-network

Lệnh này tạo một mạng cô lập để container có thể tham gia và giao tiếp với nhau.

Bước 2: Chạy container trên mạng

Giờ hãy khởi chạy hai container và kết nối chúng vào mạng vừa tạo:

docker run -d --network my-custom-network --name app1 my-app
docker run -d --network my-custom-network --name app2 my-app
  • Cờ --network my-custom-network gắn container vào mạng đã chỉ định.
  • Cờ --name gán tên duy nhất cho container, giúp tham chiếu dễ dàng hơn.

Cả app11 and app2 giờ có thể giao tiếp bằng tên container của nhau. Bạn có thể kiểm tra khả năng kết nối bằng lệnh ping` bên trong một trong các container:

docker exec -it app1 ping app2

Nếu mọi thứ được thiết lập đúng, bạn sẽ thấy phản hồi xác nhận các container có thể giao tiếp.

Kiểm tra mạng Docker

Để xác minh cấu hình mạng và các container được kết nối, dùng:

docker network inspect my-custom-network

Lệnh này cung cấp chi tiết về mạng, gồm dải IP, container được kết nối và cấu hình.

Expose và publish cổng

Khi chạy container cần truy cập từ bên ngoài, bạn có thể mở các cổng cụ thể.

Ví dụ, để chạy máy chủ web Nginx và mở nó trên cổng 8080 của máy cục bộ, dùng:

docker run -d -p 8080:80 nginx

Lệnh này ánh xạ cổng 80 trong container sang cổng 8080 trên host, giúp truy cập dịch vụ qua http://localhost:8080.

Thực hành tốt nhất cho mạng Docker

  • Dùng mạng tùy chỉnh: Tránh dùng bridge mặc định cho môi trường production để giảm truy cập ngoài ý muốn giữa các container.
  • Tận dụng khám phá dựa trên DNS: Thay vì hardcode địa chỉ IP, hãy dùng tên container để cho phép khám phá dịch vụ động.
  • Hạn chế phơi bày ra ngoài: Dùng tường lửa hoặc chính sách mạng để kiểm soát truy cập dịch vụ.
  • Giám sát lưu lượng: Dùng các công cụ như docker network inspect, Wireshark hoặc Prometheus để phân tích lưu lượng mạng và phát hiện bất thường.
  • Tối ưu overlay network: Nếu triển khai phân tán, tinh chỉnh overlay network để giảm độ trễ bằng cách tận dụng các tùy chọn định tuyến cục bộ trên host.

Thực hành tốt nhất với Docker và các bước tiếp theo

Giờ bạn đã học những nền tảng của Docker, đã đến lúc nâng cao kỹ năng và áp dụng các thực hành tốt giúp bạn xây ứng dụng container hóa an toàn, hiệu quả và dễ bảo trì.

Những thực hành tốt sau sẽ giúp bạn tinh gọn quy trình làm việc với Docker và tránh các lỗi thường gặp.

  • Dùng image nền chính thức: Luôn ưu tiên image nền chính thức và được bảo trì tốt để đảm bảo bảo mật và ổn định. Image chính thức được tối ưu, cập nhật thường xuyên và ít khả năng chứa lỗ hổng.
  • Giữ image nhỏ gọn: Giảm kích thước image bằng cách chọn image nền tối giản (ví dụ, python:3.9-slim thay vì python:3.9). Loại bỏ phụ thuộc và tệp không cần thiết để tối ưu lưu trữ và thời gian pull.
  • Dùng build đa giai đoạn: Tối ưu Dockerfile bằng cách tách phụ thuộc build và runtime. Build đa giai đoạn đảm bảo chỉ đưa các tạo phẩm cần thiết vào image cuối, giảm kích thước và bề mặt tấn công.
  • Gắn thẻ image đúng cách: Luôn dùng thẻ phiên bản (ví dụ, my-app:v1.0.0) thay vì latest để tránh cập nhật ngoài ý muốn khi pull image.
  • Quét lỗ hổng trong image: Dùng các công cụ quét bảo mật như docker scan, Trivy hoặc Clair để phát hiện và khắc phục lỗ hổng trước khi triển khai.
  • Quản lý biến môi trường an toàn: Tránh lưu thông tin nhạy cảm trong image. Dùng Docker secrets, biến môi trường hoặc công cụ quản lý bí mật bên ngoài như AWS Secrets Manager hay HashiCorp Vault.
  • Dùng tệp .dockerignore: Loại trừ các tệp không cần thiết (ví dụ, .git, node_modules, venv) để giảm kích thước ngữ cảnh build và tránh vô tình đưa tệp nhạy cảm vào image.
  • Bật logging và giám sát: Sử dụng các công cụ như Prometheus, Grafana và Fluentd cho log và giám sát container. Kiểm tra log bằng docker logs và bật logging có cấu trúc để quan sát tốt hơn.

Khi đã nắm vững những điều cơ bản của Docker, còn rất nhiều chủ đề nâng cao để khám phá. Dưới đây là vài hướng nên tìm hiểu tiếp:

  • Docker Swarm & Kubernetes: Khám phá Docker Swarm (tính năng clustering) và Kubernetes (điều phối cấp doanh nghiệp với auto-scaling và khám phá dịch vụ) cho điều phối ở mức production.
  • Thực hành tốt về bảo mật container: Để bảo vệ ứng dụng container hóa, tuân theo hướng dẫn CIS Docker Benchmark và áp dụng RBAC (kiểm soát truy cập theo vai trò).
  • CI/CD với Docker: Tự động hóa build image, quét bảo mật và triển khai bằng GitHub Actions, GitLab CI hoặc Jenkins.
  • Phát triển cloud-native: Kết hợp Docker với các nền tảng đám mây như AWS ECS, Azure Container Instances và Google Cloud Run để triển khai có khả năng mở rộng và được quản lý.
  • Chiến lược bền vững dữ liệu: Để quản lý lưu trữ tối ưu, hiểu sự khác nhau giữa Docker volume, bind mount và tmpfs.

Kết luận

Docker đã thay đổi cách các nhà phát triển xây dựng, phân phối và vận hành ứng dụng, khiến nó trở thành công cụ thiết yếu cho phát triển phần mềm hiện đại.

Trong hướng dẫn này, chúng ta đã tìm hiểu:

  • Docker là gì và vì sao quan trọng
  • Cách cài đặt và chạy container đầu tiên
  • Các khái niệm chính như image, container và mạng
  • Lưu trữ bền vững với Docker volume
  • Ứng dụng đa container với Docker Compose
  • Thực hành tốt cho bảo mật, hiệu năng và khả năng mở rộng

Nhưng đây chỉ là khởi đầu! Nếu bạn muốn đào sâu chuyên môn Docker, bạn có thể học khóa nhập môn Introduction to Docker. Để hiểu sâu hơn, bạn có thể học Intermediate Docker với nội dung build đa giai đoạn, công cụ mạng Docker và Docker Compose. Cuối cùng, bạn cũng có thể theo đuổi chứng chỉ Docker—hãy xem Hướng dẫn hoàn chỉnh về chứng chỉ Docker (DCA) 2025 nếu quan tâm!

FAQs

Docker khác gì so với máy ảo (VM)?

Container Docker chia sẻ kernel của hệ điều hành máy chủ, giúp chúng nhẹ và nhanh hơn, trong khi máy ảo (VM) cần một hệ điều hành khách đầy đủ, nặng và chậm hơn. Container phù hợp với microservice và mở rộng nhanh, còn VM thích hợp để chạy các môi trường hệ điều hành khác nhau trên cùng phần cứng.

Sự khác nhau giữa Docker CE và Docker EE là gì?

Docker Community Edition (CE) là phiên bản miễn phí, mã nguồn mở, phù hợp cho nhà phát triển cá nhân và dự án nhỏ. Docker Enterprise Edition (EE) là phiên bản trả phí với các tính năng bổ sung về bảo mật, quản lý và hỗ trợ, lý tưởng cho triển khai quy mô doanh nghiệp.

Docker có thể chạy trên Windows mà không dùng WSL 2 không?

Có. Docker Desktop cho Windows cung cấp hai chế độ: backend dựa trên WSL 2 (khuyến nghị) và backend Hyper-V. Backend WSL 2 cho hiệu năng tốt hơn và tích hợp mượt với Windows, trong khi Hyper-V là lựa chọn thay thế nếu WSL 2 không khả dụng.

Image Docker đa kiến trúc là gì?

Image đa kiến trúc (multi-arch) cho phép một Docker image duy nhất hỗ trợ nhiều kiến trúc (ví dụ, x86, ARM). Điều này đảm bảo cùng một image có thể chạy trên các nền tảng phần cứng khác nhau mà không cần chỉnh sửa, hữu ích cho thiết bị IoT và môi trường đám mây.

Docker xử lý bảo mật như thế nào?

Docker tăng cường bảo mật thông qua cô lập namespace, nhóm điều khiển (cgroups) và hồ sơ seccomp. Ngoài ra, thực hành tốt bao gồm chạy container với người dùng không phải root, dùng image nền tối giản, bật content trust để xác minh image và quét image tìm lỗ hổng bằng các công cụ như docker scan  hoặc Trivy.


Moez Ali's photo
Author
Moez Ali
LinkedIn
Twitter

Nhà khoa học dữ liệu, Nhà sáng lập & Người tạo ra PyCaret

Chủ đề

Tìm hiểu thêm về Docker và Kubernetes với các khóa học này!

Tracks

Container hóa và ảo hóa với Docker và Kubernetes

13 giờ
Hãy khám phá sức mạnh của Docker và Kubernetes. Khóa học tương tác này sẽ giúp bạn xây dựng và triển khai ứng dụng trong các môi trường hiện đại.
Xem chi tiếtRight Arrow
Bắt đầu khóa học
Xem thêmRight Arrow