当前位置:首页 > 技术 > 正文内容

基于 RK3588 与 Debian 11 环境的 Docker 部署与内核配置指南

访客 技术 2026年10月18日 1

内核依赖与配置检查

在基于 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!" 的欢迎信息时,表明容器引擎已在当前硬件与系统环境下成功部署并正常运行。

相关文章

Linux crontab 详解

1) crontab 是什么cron 是 Linux 的定时任务守护进程;crontab 是用来编辑/查看“按时间周期执行命令”的表(cron table)。常见两类:用户 crontab:每个用户一份(crontab -e 编辑)系统级 crontab / cron.d:可指定执行用户(/etc/crontab、/etc/cron.d/*)2) crontab 时间...

富文本里可以允许的 HTML 属性

一、所有标签默认允许的安全属性(极少)class        (可选)id           (通常建议禁用)title️ 注意:id 容易被滥用做锚点注入,很多系统直接禁用class 允许的话最好只允许固定前缀(如 editor-*)二、a 标签允许属性<a href="" t...

Mac 安装 Node.js 指南

方法一:通过官网安装包(最简单,适合初学者)如果你只是想快速安装并开始使用,这是最直接的方法。访问 Node.js 官网。页面会显示两个版本:LTS (Recommended For Most Users):长期支持版,最稳定。建议选这个。Current:最新特性版,包含最新功能但可能不够稳定。下载 .pkg 安装包并运行。按照安装向导点击“下一步”即可完成。方法二:使用 Homebrew 安装(...

Dom\HTML_NO_DEFAULT_NS 的副作用:自动加闭合标签

在使用Dom\HTMLDocument时,Dom\HTML_NO_DEFAULT_NS 将禁止在解析过程中设置元素的命名空间, 此设置是为了与DOMDocument向后兼容而存在的。当使用它时,已知的一个副作用就是:自动加闭合标签例如 </img> 为什么会这样?当你使用:Dom\HTML_NO_DEFAULT_NS文档会变成 无命名空间模式,此时内部更接近 XML...

Laravel 事件和监听器创建

在 Laravel 中,使用 Artisan 命令创建 Events(事件) 和 Listeners(监听器) 是非常高效的。你可以通过以下几种方式来实现:1. 手动创建单个 Event如果你只想创建一个事件类,可以使用 make:event 命令:Bashphp artisan make:event UserRegistered执行后,文件将生成在 app/Even...

自定义域名解析神器 dnsmasq

什么是 dnsmasq?dnsmasq 是一个轻量级、功能强大的网络服务工具,专为小型和中等规模网络设计。它是一个综合的网络基础设施解决方案[1]。dnsmasq 能做什么?功能说明应用场景DNS 转发与缓存将 DNS 查询转发到上游服务器(ISP、Google DNS 等),并在本地缓存结果加快 DNS 查询速度,减少外部 DNS 流量本地 DNS解析本地网络设备的主机名,无需编辑&n...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。