基于 RK3588 与 Debian 11 环境的 Docker 部署与内核配置指南
内核依赖与配置检查
在基于 RK3588 架构及 Debian 11 操作系统的嵌入式设备上运行 Docker,首要前提是 Linux 内核必须启用特定的功能模块。这些核心模块包括控制组(cgroups)、命名空间(namespaces)、网络过滤器(netfilter)以及联合文件系统(overlayfs)。若内核编译时未开启这些选项,容器引擎将无法正常启动。
为了验证当前内核配置是否满足容器化运行标准,可以利用 Docker 官方提供的内核配置检测脚本。将该脚本放置于内核源码目录中并执行:
# 赋予脚本执行权限并指定内核配置文件路径
chmod +x check-config.sh
./check-config.sh /path/to/kernel/source/.config
脚本执行后,会输出详细的配置状态报告。在分析输出结果时,需重点关注以下两个部分:
- Generally Necessary(必需项):此类配置必须显示为
enabled。如果显示为missing或enabled (as module),则必须进入内核配置菜单(如make menuconfig)将其强制编译进内核(设置为Y)。 - Optional Features(可选项):根据实际业务需求选择性开启,例如用户命名空间(
CONFIG_USER_NS)或特定的存储驱动支持。
网络防火墙组件切换
Debian 11 系统默认采用 iptables-nft 作为网络包过滤工具,而 Docker 引擎在底层网络配置时更依赖于传统的 iptables-legacy。为了避免容器网络桥接和端口映射出现异常,需要将系统的 iptables 后端切换至 legacy 版本。
执行以下命令完成网络组件的切换:
# 将 IPv4 和 IPv6 的 iptables 切换为 legacy 模式
sudo update-alternatives --set iptables /usr/sbin/iptables-legacy
sudo update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy
# 若需恢复为 nft 模式,可执行以下命令(按需使用)
# sudo update-alternatives --set iptables /usr/sbin/iptables-nft
# sudo update-alternatives --set ip6tables /usr/sbin/ip6tables-nft
Docker 引擎安装与验证
完成内核与网络组件的前置配置后,即可通过官方 APT 仓库部署 Docker 引擎。以下流程采用了最新的官方推荐目录结构(如使用 /etc/apt/keyrings 存储 GPG 密钥)并加入了硬件架构自动识别,以确保在 ARM64 平台上的兼容性。
1. 初始化环境与导入密钥
# 更新软件包索引并安装基础依赖
sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg lsb-release
# 创建密钥环目录并导入 Docker 官方 GPG 密钥
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
2. 配置软件源与安装引擎
# 自动获取系统架构与发行版代号,写入 Docker 软件源配置
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 再次更新索引并安装 Docker 核心组件及插件
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
3. 服务管理与功能验证
安装完毕后,启动 Docker 守护进程并设置开机自启,随后通过拉取并运行测试镜像来验证环境是否就绪:
# 启动服务并设置开机自启
sudo systemctl enable --now docker
# 拉取并运行 hello-world 测试容器
sudo docker run --rm hello-world
当终端输出 "Hello from Docker!" 的欢迎信息时,表明容器引擎已在当前硬件与系统环境下成功部署并正常运行。