VnRobo
Về chúng tôiBảng giáBlogLiên hệ
🇺🇸ENĐăng nhậpDùng thử miễn phí
🇺🇸EN
VnRobo logo

Hạ tầng AI cho robot công nghiệp thế hệ mới.

Sản phẩm

  • Tính năng
  • Bảng giá
  • Kiến thức
  • Dịch vụ

Công ty

  • Về chúng tôi
  • Blog
  • Liên hệ

Pháp lý

  • Chính sách bảo mật
  • Điều khoản sử dụng

© 2026 VnRobo. Bảo lưu mọi quyền.

Được tạo với♥tại Việt Nam
VnRobo
Về chúng tôiBảng giáBlogLiên hệ
🇺🇸ENĐăng nhậpDùng thử miễn phí
🇺🇸EN
  1. Trang chủ
  2. Blog
  3. Triển khai ứng dụng IoT với Docker và Docker Compose
otherdevopsdockeriot

Triển khai ứng dụng IoT với Docker và Docker Compose

Hướng dẫn triển khai ứng dụng IoT với Docker và Docker Compose trên edge devices — đóng gói, quản lý nhất quán và dễ bảo trì.

Nguyễn Anh Tuấn15 tháng 7, 20254 phút đọcCập nhật: 16 thg 6, 2026

Tại sao Docker cho IoT?

Trong các dự án IoT truyền thống, việc cài đặt phần mềm trên hàng trăm thiết bị edge là cơn ác mộng — mỗi device có thể có phiên bản OS, thư viện và cấu hình khác nhau. Docker giải quyết vấn đề này bằng cách đóng gói toàn bộ ứng dụng cùng dependencies vào container, đảm bảo chạy giống nhau trên mọi thiết bị.

Thiết bị IoT và edge device kết nối trong mạng công nghiệp
Thiết bị IoT và edge device kết nối trong mạng công nghiệp

Kiến trúc IoT với Docker

Một hệ thống IoT điển hình bao gồm nhiều service chạy trên edge device:

┌─────────────────────────────────┐
│         Edge Device (ARM64)      │
│  ┌───────────┐ ┌──────────────┐ │
│  │ MQTT      │ │ Data         │ │
│  │ Broker    │ │ Collector    │ │
│  └───────────┘ └──────────────┘ │
│  ┌───────────┐ ┌──────────────┐ │
│  │ InfluxDB  │ │ Grafana      │ │
│  │ (TimeSer) │ │ (Dashboard)  │ │
│  └───────────┘ └──────────────┘ │
└─────────────────────────────────┘

Docker Compose cho Multi-Service IoT

File docker-compose.yml quản lý toàn bộ stack:

version: "3.8"
services:
  mosquitto:
    image: eclipse-mosquitto:2.0
    ports:
      - "1883:1883"
    volumes:
      - ./mosquitto/config:/mosquitto/config
      - mosquitto_data:/mosquitto/data
    restart: unless-stopped

  collector:
    build: ./collector
    environment:
      - MQTT_HOST=mosquitto
      - INFLUX_HOST=influxdb
      - INFLUX_TOKEN=${INFLUX_TOKEN}
    depends_on:
      - mosquitto
      - influxdb
    restart: unless-stopped

  influxdb:
    image: influxdb:2.7-alpine
    volumes:
      - influx_data:/var/lib/influxdb2
    environment:
      - DOCKER_INFLUXDB_INIT_MODE=setup
      - DOCKER_INFLUXDB_INIT_USERNAME=admin
      - DOCKER_INFLUXDB_INIT_PASSWORD=${INFLUX_PASSWORD}
      - DOCKER_INFLUXDB_INIT_ORG=iot
      - DOCKER_INFLUXDB_INIT_BUCKET=sensors
    restart: unless-stopped

  grafana:
    image: grafana/grafana:10.2-alpine
    ports:
      - "3000:3000"
    volumes:
      - grafana_data:/var/lib/grafana
    restart: unless-stopped

volumes:
  mosquitto_data:
  influx_data:
  grafana_data:

Tối ưu Docker cho Edge Devices

1. Multi-stage Build giảm kích thước image

# Build stage
FROM python:3.11-slim AS builder
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir --prefix=/install -r requirements.txt

# Runtime stage
FROM python:3.11-slim
COPY --from=builder /install /usr/local
COPY . /app
WORKDIR /app
CMD ["python", "collector.py"]

Image giảm từ ~900MB xuống còn ~150MB — rất quan trọng khi deploy qua mạng 4G.

2. Multi-arch Build cho ARM64

Nhiều edge device (Raspberry Pi, NVIDIA Jetson) chạy ARM64:

# Tạo builder hỗ trợ multi-arch
docker buildx create --name iotbuilder --use

# Build cho cả AMD64 và ARM64
docker buildx build --platform linux/amd64,linux/arm64 \
  -t myregistry/collector:v1.2 --push .

3. Resource Limits

Edge devices có RAM hạn chế, luôn đặt giới hạn:

services:
  collector:
    deploy:
      resources:
        limits:
          memory: 256M
          cpus: "0.5"

CI/CD cho IoT Fleet

Workflow triển khai tự động

# 1. Push code lên GitHub
git push origin main

# 2. GitHub Actions build và push image
# 3. Trên mỗi device, Watchtower tự động cập nhật

Sử dụng Watchtower để tự động pull image mới:

services:
  watchtower:
    image: containrrr/watchtower
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    environment:
      - WATCHTOWER_POLL_INTERVAL=300
      - WATCHTOWER_CLEANUP=true
    restart: unless-stopped

Màn hình code và terminal triển khai container
Màn hình code và terminal triển khai container

Bảo mật container IoT

  • Không chạy container với quyền root: dùng user: "1000:1000" trong compose
  • Read-only filesystem: read_only: true cho container không cần ghi
  • Giới hạn capabilities: security_opt: [no-new-privileges:true]
  • Secrets management: dùng Docker secrets hoặc file .env với chmod 600

Để quản lý fleet IoT ở quy mô lớn hơn, xem bài viết về Kubernetes cho Robot Fleet với K3s và GitOps workflow.

Monitoring và Logging

Trên edge device, log rotation rất quan trọng để tránh đầy ổ đĩa:

services:
  collector:
    logging:
      driver: "json-file"
      options:
        max-size: "10m"
        max-file: "3"

Docker và Docker Compose giúp bạn quản lý ứng dụng IoT một cách chuyên nghiệp — từ development đến production, từ một device đến hàng trăm device. Kết hợp với CI/CD và auto-update, bạn có thể triển khai và bảo trì fleet IoT hiệu quả mà không cần SSH vào từng thiết bị. Giao tiếp giữa các container IoT thường sử dụng MQTT protocol — giao thức nhẹ và phù hợp cho thiết bị tài nguyên hạn chế.

Khuyến nghị công cụ

Cloud/devops cho robot fleet

Dùng cho dashboard, API, logging, artifact storage và monitoring.

VPS for ROS 2 / fleet dashboard backend Phù hợp chạy API, Postgres, worker, dashboard và webhook automation. Xem VPS → Object storage for robot logs Lưu rosbag, video, dataset và model artifacts với chi phí dễ kiểm soát. Xem storage → Cloud GPU for training jobs Tách workload training khỏi robot để robot chỉ chạy inference/deployment. Xem GPU →

Bài viết liên quan

  • Kubernetes cho Robot Fleet: Orchestration ở quy mô lớn
  • MQTT Protocol: Giao tiếp giữa robot và cloud
  • Edge AI với NVIDIA Jetson: Triển khai AI trên thiết bị nhúng
NT

Nguyễn Anh Tuấn

Robotics & AI Engineer. Building VnRobo — sharing knowledge about robot learning, VLA models, and automation.

Khám phá VnRobo

Fleet MonitoringROS 2 IntegrationAMR Solutions

Bài viết liên quan

Tutorial
Robotics
ros2monitoringrobot-fleet
other

Cách giám sát robot ROS 2 từ xa: Hướng dẫn đầy đủ 2026

Hướng dẫn từng bước giám sát robot ROS 2 từ bất kỳ đâu — pin, CPU, trạng thái, heartbeat, alerts. Code chạy được, setup 10 phút. Miễn phí 3 robots.

14/4/20267 phút đọc
NT
So sánh
Robotics
aws-robomakerrobot-fleetros2
other

AWS RoboMaker 2026: 5 lựa chọn thay thế cho đội ROS 2

AWS RoboMaker đã đóng cửa tháng 9/2025. Đây là 5 lựa chọn thay thế tốt nhất cho quản lý fleet robot ROS 2 năm 2026 — so sánh thẳng thắn, giá cả và hướng dẫn migration.

12/4/202611 phút đọc
NT
Robotics
iotmqttcommunication
other

MQTT Protocol: Giao tiếp giữa robot và cloud

MQTT Protocol cho robot và IoT — thiết lập broker, QoS levels, topic design và truyền telemetry từ robot lên cloud.

1/9/20254 phút đọc
NT
VnRobo logo

Hạ tầng AI cho robot công nghiệp thế hệ mới.

Sản phẩm

  • Tính năng
  • Bảng giá
  • Kiến thức
  • Dịch vụ

Công ty

  • Về chúng tôi
  • Blog
  • Liên hệ

Pháp lý

  • Chính sách bảo mật
  • Điều khoản sử dụng

© 2026 VnRobo. Bảo lưu mọi quyền.

Được tạo với♥tại Việt Nam