Blog

9+ Mẹo Bảo Mật Docker Container Chi Tiết Nhất [2025]

Docker giúp việc đóng gói và triển khai ứng dụng trở nên đơn giản hơn, hiệu quả hơn. Tuy nhiên, nếu không bảo mật đúng cách, Docker container sẽ là cửa ngõ tấn công toàn bộ hệ thống.

Trong bài viết này, GDATA sẽ chia sẻ 9+ mẹo bảo mật Docker container [2025]. Nội dung được tổng hợp từ thực tế triển khai hạ tầng cloud cho doanh nghiệp. Mời bạn đọc cùng tìm hiểu ngay thôi nào!

Docker Container là gì?

Docker Container là một môi trường chạy ứng dụng được đóng gói gọn nhẹ. Nó bao gồm toàn bộ mã nguồn, thư viện, cấu hình và các thành phần cần thiết để ứng dụng hoạt động.

Container giúp bạn triển khai ứng dụng đồng nhất trên mọi môi trường. Ví dụ như local, staging, production, mà không lo “chạy được trên máy tôi, nhưng không chạy được trên máy khác”.

Đặc điểm nổi bật của Docker Container:

Đặc điểmMô tả
Nhẹ hơn máy ảoKhông cần OS riêng như Virtual Machine (VM), chia sẻ kernel với hệ điều hành host
Khởi động nhanhContainer khởi chạy chỉ trong vài giây
Dễ dàng sao chép & triển khaiCó thể build image một lần rồi chạy ở mọi nơi
Tách biệt với hệ thống hostỨng dụng trong container không ảnh hưởng đến hệ điều hành chính

Ví dụ:

Thay vì cài đặt Node.js trên máy chủ, bạn chỉ cần:

bash

docker run -it node:18-alpine

➡️Môi trường Node.js sẵn sàng chạy ứng dụng, không cần cài đặt gì thêm.

Docker Container dùng để làm gì?

Docker containers là một công nghệ containerization giúp đóng gói và chạy các ứng dụng trong một môi trường cách ly:

  • Chạy web server (Apache, NGINX)
  • Deploy ứng dụng Node.js, Python, Java…
  • Cài các công cụ DevOps như Jenkins, GitLab CI
  • Thiết lập môi trường học AI, ML, Data Science
  • Đóng gói microservices trong các kiến trúc lớn (Kubernetes)

Vì sao cần bảo mật Docker Container?

Docker container giúp đóng gói và triển khai ứng dụng nhanh chóng. Nhưng chính sự tiện lợi đó lại khiến nó trở thành mục tiêu tấn công lý tưởng cho tin tặc; nếu bạn bỏ qua những cấu hình bảo mật quan trọng.

Theo báo cáo của Snyk và SentinelOne năm 2024 thì:

  • 63% image trên Docker Hub chứa ít nhất 1 lỗ hổng bảo mật (CVE)
  • Hơn 50% hệ thống container doanh nghiệp sử dụng container chạy với quyền root
  • Gần 40% hệ thống không giới hạn tài nguyên container. Chính vì thế sẽ dễ bị khai thác DDoS nội bộ

Có thể bạn quan tâm: Docker và Kubernetes: Lựa Chọn Nào Cho Doanh Nghiệp?

9+ mẹo bảo mật Docker Container chi tiết [2025]

Dưới đây là 9 mẹo bảo mật mà bạn có thể tham khảo cho Docker Container:

1. Sử dụng Docker Image chính chủ & đã kiểm định

Đầu tiên, bạn nên hạn chế tối đa dùng image không rõ nguồn

Giải pháp:

  • Luôn chọn image có dấu tick xanh trên Docker Hub (Verified Publisher)
  • Không dùng tag latest, hãy chỉ định phiên bản cụ thể (VD: nginx:1.25.3)
  • Dùng lệnh kiểm tra chi tiết image:docker inspect nginx:1.25.3

Bật Docker Content Trust để chỉ pull image có chữ ký: export DOCKER_CONTENT_TRUST=1

Bảo mật Docker Container

2. Không chạy container bằng quyền root

Theo tài liệu chính thức của Docker và OWASP Top 10 về Docker (2024), việc chạy container bằng tài khoản root có thể tạo điều kiện cho hacker leo thang đặc quyền và kiểm soát hệ thống host.

Cách thực hiện:

– Trong Dockerfile:

Dockerfile
RUN addgroup -S app && adduser -S app -G app
USER app

– Trong docker-compose.yml:

yaml
user: "1001:1001"

3. Giới hạn quyền Linux Capabilities để bảo mật Docker Container

Docker mặc định cấp nhiều quyền hệ thống hơn mức cần thiết.

Cách thực hiện:

bash
docker run --cap-drop=ALL --cap-add=NET_BIND_SERVICE myimage

→ Chỉ cấp những quyền thực sự cần như NET_ADMIN, SYS_TIME nếu bắt buộc.

4. Không mount thư mục nhạy cảm từ máy host

Tránh mount các đường dẫn như /, /etc, /var/run/docker.sock

Sai lầm phổ biến:

yaml
volumes:
- /:/host
- /var/run/docker.sock:/var/run/docker.sock

Cách làm đúng:

yaml
volumes:
- ./data:/app/data:ro

5. Quét lỗ hổng image trước khi sử dụng – Bảo mật Docker Container

Các công cụ phổ biến:

  • Trivy (miễn phí – nhanh – chính xác):
bash
trivy image nginx:1.25.3
  • Snyk CLI
  • Docker Scout (có sẵn nếu bạn dùng Docker Desktop)

✅ Tích hợp kiểm tra image vào CI/CD (VD: GitHub Actions, GitLab Pipeline)

6. Giới hạn tài nguyên container

Tránh tình trạng 1 container chiếm toàn bộ CPU, RAM gây “đóng băng” hệ thống

Cách làm:

bash
docker run --memory="512m" --cpus="1" myapp

Trong docker-compose.yml:

yaml
deploy:
resources:
limits:
memory: 512M
cpus: '1.0'

7. Cập nhật image thường xuyên & định kỳ rebuild

Về việc cập nhật image:

  • Image cần được build lại ít nhất mỗi tuần để cập nhật gói bảo mật mới
  • Theo dõi CVE từ GitHub hoặc Docker Advisory

Gợi ý: Bạn có thể tự động hóa rebuild bằng cron hoặc CI/CD

8. Cấu hình mạng nội bộ & giới hạn truy cập nhằm bảo mật Docker Container

Không nên public port container trực tiếp ra internet nếu không có reverse proxy bảo vệ

Bạn có thể:

  • Dùng mạng Docker riêng: docker network create secure-net
  • Dùng reverse proxy: NGINX, Traefik
  • Giới hạn IP truy cập bằng tường lửa hoặc cài Auth Basic

9. Bật AppArmor, SELinux và theo dõi hành vi container

AppArmor (Ubuntu):

bash
docker run --security-opt apparmor=docker-default mycontainer

SELinux (CentOS/RedHat):
Kiểm tra log & áp dụng quy tắc từ hệ điều hành.

Giám sát container bằng công cụ

Bạn có thể giám sát container bằng công cụ sau:

Công cụMục đích
FalcoPhát hiện hành vi container bất thường
AuditDGhi log toàn bộ hành vi hệ thống
Prometheus + GrafanaGiám sát real-time tài nguyên

Bảng tóm tắt 9+ mẹo bảo mật Docker Container

MẹoMục tiêuCông cụ hỗ trợ
Image chuẩnNgăn mã độcDocker Trust, Trivy
Không rootChống leo thang đặc quyềnDockerfile USER
Giới hạn CapNgăn gọi API hệ thống nguy hiểm--cap-drop, --cap-add
Không mount sockTránh container kiểm soát Docker daemonDocker Volume
Giới hạn RAM/CPUỔn định tài nguyênCompose, run options
Mạng riêngTránh bị scan cổngDocker Network, proxy
Scan imageNgăn CVETrivy, Snyk
SELinux/AppArmorHạn chế hành vi containerOS-level controls

Hướng dẫn thêm: Tạo Dockerfile chuẩn bảo mật

🎯 Mục tiêu: Tạo Dockerfile nhẹ, an toàn, không chạy root, dễ duy trì

MẪU CHUẨN BẢO MẬT

Dockerfile
# Dùng image tối ưu, đã xác thực
FROM node:18.19.0-slim
# Đặt biến môi trường bảo mật
ENV NODE_ENV=production
# Tạo user không phải root
RUN groupadd -r appgroup && useradd -r -g appgroup appuser
# Tạo thư mục và gán quyền
WORKDIR /usr/src/app
COPY . .
# Chỉ cài gói cần thiết
RUN npm ci --omit=dev
# Chuyển quyền cho user
RUN chown -R appuser:appgroup /usr/src/app
USER appuser
# Mở port cục bộ
EXPOSE 3000
# Lệnh chạy
CMD ["node", "index.js"]

✅ Ý nghĩa:

LệnhGiải thích
FROM node:18.19.0-slimImage nhẹ, giảm tấn công
ENV NODE_ENV=productionBỏ debug, giảm log
USER appuserKhông dùng root
COPY . . + npm ciKhông cài devDependencies
EXPOSE 3000Chỉ public port cần thiết
CMDDùng lệnh rõ ràng, không để bash

Hướng dẫn dùng CI/CD kiểm tra image tự động

Mục tiêu: Tự động phát hiện lỗ hổng bảo mật (CVE), gói lỗi thời, sai permission… mỗi lần build.

1. Sử dụng GitHub Actions + Trivy

Cài trivy cho CI

Tạo file: .github/workflows/security-scan.yml

yaml
name: Security Scan with Trivy
on:
push:
branches: [main]
pull_request:
jobs:
scan:
name: Scan Docker Image
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Build Docker image
run: docker build -t myapp:test .
- name: Run Trivy vulnerability scanner
uses: aquasecurity/trivy-action@master
with:
image-ref: myapp:test
format: 'table'
exit-code: '1'
severity: 'CRITICAL,HIGH'

=> Nếu phát hiện lỗi CRITICAL hoặc HIGH, CI sẽ fail.

2. CI/CD tools khác cũng có tích hợp scan:

ToolTính năng nổi bật
GitLab CITích hợp Container Scanning trong GitLab Ultimate
Bitbucket PipelinesHỗ trợ Trivy, Snyk
JenkinsDùng docker scan hoặc Trivy Plugin
Snyk CLITích hợp trực tiếp trong pipeline

Kết hợp kiểm tra permission container

Sau khi chạy container, kiểm tra lại:

bash
docker exec -it mycontainer whoami
docker container inspect mycontainer | grep CapAdd

Kết luận

Chính vì độ phổ biến và sự tiện lợi của Docker, bảo mật Docker Container ngày càng trở thành yếu tố then chốt trong vận hành hệ thống hiện đại. Bảo mật Docker Container không chỉ là nhiệm vụ của DevOps mà là trách nhiệm của cả team phát triển. Với 9 mẹo trên, bạn hoàn toàn có thể tự tin giúp giảm rủi ro bị khai thác container. Xây dựng hệ thống vận hành ổn định hơn. Đồng thời cũng dễ dàng scale khi phát triển sản phẩm. Hi vọng bài viết của GDATA đã đem lại cho bạn những thông tin hữu ích!
GDATA – Thuê VPS toàn diện cho doanh nghiệp!
Xem thêm: Cloud VPS Giá Rẻ (Tổng hợp những chương trình khuyến mãi mới nhất của GDATA).
               Giá VPS
  • 24/06/2025
  • 971 Lượt xem
avatar_author

Tác giả: Cao Thùy Dung

Tôi là Cao Thùy Dung, với hơn 4 năm kinh nghiệm phát triển nội dung số. Trong đó, với hơn 1 năm kinh nghiệm trong lĩnh vực công nghệ thông tin, đặc biệt chuyên sâu về các chủ đề Cloud VPS, Cloud Server, bảo mật mạng, chuyển đổi số và hạ tầng IT.Tôi mong muốn các bài viết khoa học – dễ hiểu – thực tiễn sẽ giúp bạn đọc ở mọi trình độ dễ dàng tiếp cận kiến thức kỹ thuật phức tạp.

  1. Đăng ký dùng thử
  2. Zalo chat
  3. Gọi miễn phí