Контейнер Docker не показывает смонтированный том - проблема с доступом

root@centdev01$ grep -e CMD -e RUN Dockerfile
RUN apt-get update 
RUN apt-get -y install ruby ruby-dev build-essential redis-tools
RUN gem install --no-rdoc --no-ri sinatra json redis
RUN mkdir -p /opt/webapp
RUN chmod 777 /opt/webapp
CMD ["/opt/webapp/bin/webapp"]

root@centdev01$ docker build -t "alok87/sinatra" .

root@centdev01$ docker run -d -p 80 --name ubunsin10 -v $PWD/webapp:/opt/webapp alok87/sinatra
25ekgjalgjal25rkg
root@centdev01$ docker logs ubunsin10
/opt/webapp/bin/webapp: Permission Denied - /opt/webapp/bin/webapp ( Errno:EACCESS)

Проблема в том, что том монтируется к контейнеру, но из контейнера у него нет доступа к смонтированному тому. Я могу перейти в / opt / webapp / bin, но не могу ls / opt / webapp / bin.

Подскажите, пожалуйста, как это можно исправить. У монтирования хоста есть все файлы с разрешением 777.


person Alok Singh    schedule 06.10.2014    source источник
comment
Почему ты вырезал много своего Dockerfile? Трудно понять, делаете ли вы то, чего не должны.   -  person Marcus Hughes    schedule 06.10.2014


Ответы (1)


Процессы Docker имеют тип по умолчанию svirt_lxc_net_t. По умолчанию этим процессам запрещен доступ к вашему контенту в / var, / root и / home.

Вы указали подходящую метку типа для вашей хост-папки, чтобы позволить процессам контейнера получать доступ к содержимому. Вы можете сделать это, присвоив папке $ PWD / webapp метку типа svirt_sandbox_file_t.

chcon -Rt svirt_sandbox_file_t $PWD/webapp

После этого вы можете получить доступ к папке из контейнера. Подробнее об этом читайте в статье Дэна Уолша - Добавление новых функций безопасности в Docker

person Behe    schedule 06.10.2014
comment
Спасибо, Дэн. проблема решается после запуска контейнера с флагом --privileged = true. - person Alok Singh; 09.10.2014
comment
Это решает вашу проблему, но если вы запускаете с привилегиями, вы в основном предоставляете своему контейнеру докера полные права для вашей хост-системы. Подумайте о безопасности, вероятно, это не то, что вы хотите разоблачать. - person Behe; 09.10.2014