gpt4 book ai didi

ubuntu - 无法在 Docker 中重新加载或启动 AppArmor

转载 作者:行者123 更新时间:2023-12-02 18:17:20 30 4
gpt4 key购买 nike

这是我的Dockerfile :

FROM ubuntu:14.04

RUN apt-get update

RUN apt-get install -y software-properties-common
RUN apt-get install -y python-software-properties

RUN add-apt-repository ppa:chris-lea/node.js
RUN apt-get update
RUN apt-get install -y nodejs

RUN apt-get install -y apparmor-profiles
RUN apt-get install -y apparmor-utils

ADD server.js /folder1/
ADD usr.bin.nodejs /etc/apparmor.d/

RUN service apparmor reload

CMD node /folder1/server.js

这里是 usr.bin.nodejs :
#include <tunables/global>

/usr/bin/nodejs {
#include <abstractions/base>

/usr/bin/nodejs mr,
/folder1/server.js r,
/folder1/repo/** ralkmix,
network,

}

我跑 sudo docker build -t scadge/test-one .建立这个形象。在 Step 7 : RUN apt-get install -y apparmor-profiles我收到红色消息 invoke-rc.d: policy-rc.d denied execution of startinvoke-rc.d: policy-rc.d denied execution of reload .也在 Step 11 : RUN service apparmor reload我得到以下信息:
 * Reloading AppArmor profiles
* Mounting securityfs on /sys/kernel/security...
mount: permission denied
...fail!
...fail!

..确定apparmor配置文件不起作用。那么如何让 AppArmor 在 Docker 中工作呢?我还想承认,所有这些东西在我的桌面 Ubuntu 14.04 上都可以正常工作,从官方网站下载。

最佳答案

首先是免责声明。你不想这样做!

因为在容器中重新加载 AppArmor 配置文件会将它们重新加载到主机中 !

这是因为 Docker 容器与主机共享正在运行的 Linux 内核。

容器本身已经使用 /etc/apparmor.d/docker 进行了限制。简介,顺便说一句。

现在,如果您确实确定要从容器中加载主机 AppArmor 配置文件...

问题很明显,AppArmor 无法挂载 securityfs。

您可以使用 --privileged 启用挂载选项。

You can also enable itSYS_ADMIN capability :

docker run --cap-add=SYS_ADMIN debian:jessie sh -c 'mount -t securityfs none /mnt && echo Done!'

如果您使用 SYS_ADMIN选项,那么您必须编辑 /etc/apparmor.d/docker主机上的个人资料并注释掉所有 deny涉及 /sys/kernel 的行分支。

同样,这很可能不是您想要做的事情。

关于ubuntu - 无法在 Docker 中重新加载或启动 AppArmor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25533666/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com