2014-08-27 51 views
2

開始的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上正常工作,從官方網站下載。

回答

1

首先聲明。你不想這樣做!

因爲重新加載容器中的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分支。

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