不能重装或泊坞

问题描述:

开始的AppArmor这里是我的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_ADMINcapability

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分支。

再一次,这很可能不是你想要做的事情。