docker安装卷与权限被拒绝

我正在尝试设置一个从主机挂载卷的docker容器。 无论我尝试什么,它总是说远程进入docker集装箱时被拒绝。 这是我尝试添加到我的泊坞窗文件中的一些命令:

RUN su -c "setenforce 0" 

 chcon -Rt svirt_sandbox_file_t /app 

当我远程进入我的容器时,仍然出现以下错误:

错误:EACCES:权限被拒绝,scandir'/ app'处于错误(本机)

错误:EACCES:权限被拒绝,在错误(本地)时打开“npm-debug.log.578996924”

正如你所看到的,app目录被分配给一些使用uid 1000的用户:

在这里输入图像说明

这是我的docker文件:

 FROM php:5.6-fpm # Install modules RUN apt-get update && apt-get install -y \ git \ unzip \ libmcrypt-dev \ libicu-dev \ mysql-client \ freetds-dev \ libxml2-dev RUN apt-get install -y freetds-dev php5-sybase # This symlink fixes the pdo_dblib install RUN ln -s /usr/lib/x86_64-linux-gnu/libsybdb.a /usr/lib/ RUN docker-php-ext-install pdo \ && docker-php-ext-install pdo_mysql \ && docker-php-ext-install pdo_dblib \ && docker-php-ext-install iconv \ && docker-php-ext-install mcrypt \ && docker-php-ext-install intl \ && docker-php-ext-install opcache \ && docker-php-ext-install mbstring # Override the default php.ini with a custom one COPY ./php.ini /usr/local/etc/php/ # replace shell with bash so we can source files RUN rm /bin/sh && ln -s /bin/bash /bin/sh # nvm environment variables ENV NVM_DIR /usr/local/nvm ENV NODE_VERSION 4.4.7 # install nvm RUN curl --silent -o- https://raw.githubusercontent.com/creationix/nvm/v0.31.2/install.sh | bash # install node and npm RUN source $NVM_DIR/nvm.sh \ && nvm install $NODE_VERSION \ && nvm alias default $NODE_VERSION \ && nvm use default # add node and npm to path so the commands are available ENV NODE_PATH $NVM_DIR/v$NODE_VERSION/lib/node_modules ENV PATH $NVM_DIR/versions/node/v$NODE_VERSION/bin:$PATH # confirm installation RUN node -v RUN npm -v # Install Composer RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer RUN composer --version # Configure freetds ADD ./freetds.conf /etc/freetds/freetds.conf WORKDIR /app # Gulp install RUN npm install -g gulp RUN npm install -g bower CMD ["php-fpm"] 

这是我的docker组成:

 nginx_dev: container_name: nginx_dev build: docker/nginx_dev ports: - "80:80" depends_on: - php_dev links: - php_dev volumes: - ./:/app php_dev: container_name: php_dev build: docker/php-dev volumes: - ./:/app` 

是否有任何命令我可以运行给root用户访问应用程序目录的权限? 我也在使用docker-compose。

从目录列表中看来,你已经configuration了selinux(这是权限位上的尾随点)。 在启用selinux的Docker中,您需要使用额外的标志:z来挂载卷。 Docker将其描述为一个卷标,但我相信这是一个selinux术语,而不是卷上的docker标签。

你得到的docker-compose.yml应该是这样的:

 version: '2' services: nginx_dev: container_name: nginx_dev build: docker/nginx_dev ports: - "80:80" depends_on: - php_dev links: - php_dev volumes: - ./:/app:z php_dev: container_name: php_dev build: docker/php-dev volumes: - ./:/app:z 

注意,我也更新了语法版本2.版本1的docker-compose.yml正在被淘汰。 版本2将导致容器在默认情况下在自己的networking中运行,这通常是首选的,但如果您有其他容器试图与这些容器交谈,则可能会导致问题。