You need to enable JavaScript to run this app. 如何为Docker守护进程应用AppArmor配置文件及解决go安装报错
优惠活动
大模型
产品
解决方案
定价
更多

如何为Docker守护进程应用AppArmor配置文件及解决go安装报错

Docker守护进程侧AppArmor配置应用方案

报错根因说明

  • 路径结构不匹配:执行go install时使用了GitHub网页的访问路径作为Go包安装路径,路径中包含的blob/master是网页浏览的专属路径标识,并非仓库实际目录结构的一部分。Go拉取模块时会按照仓库根目录的相对路径定位包,插入该路径段会让Go尝试寻找不存在的blob目录,自然无法定位到实际存在的contrib/apparmor包,直接触发“模块内不存在对应包”的报错。
  • 版本匹配异常:moby仓库的模块版本在v2迭代后需要匹配模块路径的版本声明,直接拉取官方最新标签会命中带+incompatible标记的旧版本代码,无法对应master分支下的最新代码结构,进一步放大路径定位的错误。

可落地操作步骤

1. 前置环境准备

  • 安装不低于1.18版本的Go语言环境,开启模块模式支持分支指定安装
  • 确认系统已激活AppArmor内核模块,当前操作具备root权限

2. 编译官方AppArmor配置生成程序

  • 移除错误路径中的冗余网页标识段,将原路径中blob/master部分删除,得到Go模块可识别的有效包路径:github.com/moby/moby/contrib/apparmor
  • 执行正确的安装命令,指定拉取master分支下的对应代码:
    go install github.com/moby/moby/contrib/apparmor@master

该命令会自动跳过模块版本标签校验,直接拉取master分支下对应路径的代码,编译生成可执行文件,存放在Go环境指定的bin目录下

3. 生成并加载内核侧AppArmor规则

  • 运行编译完成的可执行文件,输出Docker守护进程对应的AppArmor规则文本,重定向写入AppArmor规则存储目录:
    $(go env GOPATH)/bin/apparmor > /etc/apparmor.d/docker
  • 调用AppArmor解析工具,将新生成的规则加载到内核强制生效列表中:
    apparmor_parser -r /etc/apparmor.d/docker

4. 绑定规则到Docker守护进程

  • 修改Docker守护进程的systemd服务配置文件,在dockerd启动参数中追加AppArmor规则绑定参数:
    --apparmor-profile=docker-default
  • 重载系统服务配置,重启Docker守护进程使绑定关系生效:
    systemctl daemon-reload && systemctl restart docker

5. 生效状态验证

  • 查看dockerd进程的安全上下文信息,确认输出中已标注绑定的AppArmor profile名称,即代表配置生效

内容的提问来源于stack exchange,提问作者TheDiveO

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.25 22:27:03