簡體   English   中英

docker mount volume with permission denied

[英]docker mounting volume with permission denied

我正在嘗試設置一個從主機安裝卷的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-compose:

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用戶訪問app目錄的權限? 我也在使用docker-compose。

從目錄列表中,您似乎已配置了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. docker-compose.yml的版本1正在逐步淘汰。 默認情況下,版本2將導致容器在其自己的網絡中運行,這通常是首選,但如果您有其他容器嘗試與這些容器進行通信,則可能會導致問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM