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,eth1 为 192.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-tools、jq、smartmontools 分别用于内存压缩、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
相关推荐
I'mChloe2 小时前
Windows部署BiliNote:Docker安装、AI视频转写、Markdown笔记与cpolar远程访问
人工智能·windows·docker
打工仔折腾 AI3 小时前
飞牛OS上用Docker Compose部署ExerciseDiary运动记录并配置远程访问
运维·人工智能·后端·python·docker·容器·ai agent 实战
天衍四九-4 小时前
Docker Compose企业实战系列(八·终章):多环境隔离实战,开发/测试/生产一键切换
运维·docker·容器
shjita5 小时前
centos中安装docker
linux·docker·centos
ysu_03145 小时前
Docker-Desktop-WSL2实战指南-Windows从安装配置到项目容器化
windows·python·docker·容器·composer·dockerfile·wsl2
天衍四九-5 小时前
Docker Compose企业实战系列(三):Vue/React前端项目容器化完整部署
前端·vue.js·docker
明王明王6 小时前
从零搭建一个 AI Infra 实验室⑫:Docker 为什么默认看不到 GPU
人工智能·docker·容器
天衍四九-6 小时前
Docker Compose企业实战系列(四):Redis生产级部署|密码加固、持久化、内存优化完整方案
redis·docker·容器
小白的码BUG之路7 小时前
Docker -- 构建nginx镜像,启动vue项目
vue.js·nginx·docker
guo_wen_qiang7 小时前
docker安装常见软件集合
运维·docker·容器