RK3576开发——Docker部署

文章目录

    • [1. 确认系统和网络](#1. 确认系统和网络)
    • [2. 更新软件包索引](#2. 更新软件包索引)
    • [3. 安装 Docker 与工具](#3. 安装 Docker 与工具)
    • [4. 把 Docker 数据放到 userdata](#4. 把 Docker 数据放到 userdata)
    • [5. 验证容器能力](#5. 验证容器能力)

1. 确认系统和网络

登录后执行:

bash 复制代码
cat /etc/os-release
ip -br addr
ip route

第一条确认正在操作 Ubuntu;后两条确认网卡、IP 和默认网关。安装 Docker 要下载软件包,没有默认路由时后续的 apt-get update 会失败。

本机实际结果是 Ubuntu 22.04.5 LTS,eth1192.168.0.102/24,默认网关为 192.168.0.1

2. 更新软件包索引

执行:

bash 复制代码
apt-get update

它只下载"可安装的软件版本"列表,不会安装软件。输出 Get: 表示正在下载;完成时应出现 Reading package lists... Done

本机对 ROS 2 软件源出现:

text 复制代码
EXPKEYSIG F42ED6FBAB17C654 Open Robotics <info@osrfoundation.org>

这是 ROS 2 源签名过期。Docker 不依赖该源,Ubuntu 官方源仍可用,所以不要关闭签名校验。未来需要 ROS 2 时,再单独更新其签名密钥。

3. 安装 Docker 与工具

执行:

bash 复制代码
apt-get install -y docker.io docker-compose zram-tools jq smartmontools
  • docker.io 是运行容器的 Docker Engine。
  • docker-compose 用一个 Compose 文件管理多个容器。
  • zram-toolsjqsmartmontools 分别用于内存压缩、JSON 检查和磁盘健康检查。
  • -y 表示自动确认;首次学习时可去掉它,先看 APT 准备安装什么。

启动 Docker 并设为开机启动:

bash 复制代码
systemctl enable --now docker
systemctl is-enabled docker
systemctl is-active docker
docker --version
docker-compose --version

本机实际返回:

text 复制代码
enabled
active
Docker version 29.1.3, build 29.1.3-0ubuntu3~22.04.2
docker-compose version 1.29.2, build unknown

Ubuntu 22.04 源没有 docker-compose-plugin,因此当前使用 docker-compose,不是 docker compose。后续 Compose 文件暂时保持 1.29 兼容语法。

4. 把 Docker 数据放到 userdata

先确认 /userdata 已是独立分区:

bash 复制代码
findmnt /userdata

再创建 Docker 配置:

bash 复制代码
mkdir -p /etc/docker /userdata/docker
printf '%s\n' \
  '{' \
  '  "data-root": "/userdata/docker",' \
  '  "log-driver": "local",' \
  '  "log-opts": {"max-size": "10m", "max-file": "3"}' \
  '}' > /etc/docker/daemon.json
systemctl restart docker

data-root 决定镜像、容器和卷的保存位置;把它放在 /userdata 可避免根分区被 HA 数据填满。日志设置限制每个容器的日志为 3 个、每个最多 10MB,避免 eMMC 被日志耗尽。

验证:

bash 复制代码
docker info --format 'root={{.DockerRootDir}} driver={{.Driver}} logging={{.LoggingDriver}}'

本机实际返回:

text 复制代码
root=/userdata/docker driver=overlayfs logging=local

若仍显示 /var/lib/docker,先用 cat /etc/docker/daemon.json 检查 JSON,再用 systemctl status docker 查看错误。

5. 验证容器能力

通常执行:

bash 复制代码
docker run --rm hello-world

成功时会下载测试镜像并输出 Hello from Docker!。本机未能下载,因为:

text 复制代码
curl: (28) Failed to connect to registry-1.docker.io port 443

这不是 Docker 服务故障,而是 Docker Hub 网络不可达。灾备机不应依赖在线拉取镜像:应从 3588 导出已验证镜像,再导入 RK3576:

bash 复制代码
# 在 3588:
docker image save -o roomedge-images.tar <镜像1> <镜像2> <镜像3> <镜像4>

# 在 RK3576:
docker load -i roomedge-images.tar
docker image ls
相关推荐
自律最差的编程狗18 小时前
Ubuntu下Docker部署Ollama 轻量模型
linux·ubuntu·docker
wdfk_prog19 小时前
大型 Docker 镜像导出导入工程化:可靠性、磁盘与压缩
运维·docker·容器
郝开19 小时前
Docker Compose 模块化多环境配置规范指南:示例搭建Alf Tengine MD2DOC 1.1.1
运维·docker·容器
Albart57520 小时前
Docker Desktop 增量更新失败终极排查:Failed to apply delta update 反复回滚怎么办?
windows·docker·容器·docker部署大模型
sibylyue21 小时前
【云原生系列3】Docker Compose单机多容器编排工具
运维·docker·容器
java_logo1 天前
Docker 部署 ArchivesSpace:轻松搭建档案信息管理平台
运维·docker·容器·档案管理·轩辕镜像·archivesspace·特藏
kuroomi1 天前
Docker 与容器基础
linux·运维·docker
梦梦代码精1 天前
《回收租赁系统技术选型避坑指南:业务闭环与二开自由度详解》
开发语言·低代码·docker·开源·代码规范
_itgo1 天前
意图识别落地方案
运维·docker·容器
java_logo2 天前
Docker 部署 ClickHouse Server:轻松搭建列式 OLAP 分析数据库平台
数据库·clickhouse·docker·私有化部署·olap·列式数据库·轩辕镜像