Контейнер 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.
1 ответ
Процессы Docker имеют тип по умолчанию svirt_lxc_net_t. По умолчанию этим процессам запрещен доступ к вашему контенту в / var, / root и / home.
Вы указали подходящую метку типа для вашей хост-папки, чтобы позволить процессам контейнера получить доступ к содержимому. Это можно сделать, указав в папке $PWD/webapp метку типа svirt_sandbox_file_t.
chcon -Rt svirt_sandbox_file_t $PWD/webapp
После этого вы можете получить доступ к папке из контейнера. Подробнее об этом читайте в статье Дэна Уолша "Новые функции безопасности в Docker".