无法(强制)删除 Docker 构建中的目录

无法(强制)删除 Docker 构建中的目录

使用这个 Dockerfile:

FROM php:5.4-fpm
RUN apt-get -qqy update \
 && apt-get -qqy install git \
                     libcurl4-gnutls-dev \
                     libmcrypt-dev \
                     libpng12-dev \
                     libxml2-dev \
                     libxslt-dev \
 && docker-php-ext-install curl \
                       bcmath \
                       gd \
                       mcrypt \
                       mysql \
                       soap \
                       xsl \
                       zip \
 && rm -rf /var/lib/apt/lists

我收到错误

rm: cannot remove '/var/lib/apt/lists': Directory not empty

但是,如果我将其分离rm到另一个RUN语句中,错误就会突然消失。

FROM php:5.4-fpm
RUN apt-get -qqy update \
 && apt-get -qqy install git \
                     libcurl4-gnutls-dev \
                     libmcrypt-dev \
                     libpng12-dev \
                     libxml2-dev \
                     libxslt-dev \
 && docker-php-ext-install curl \
                       bcmath \
                       gd \
                       mcrypt \
                       mysql \
                       soap \
                       xsl \
                       zip
RUN rm -rf /var/lib/apt/lists

rm/bin/rmphp:5.4-fpm容器里。为什么在第一种情况下docker build无法删除/var/lib/apt/lists,为什么即使有标志,它也会以非零退出状态退出-f

答案1

根据 Docker 开发讨论,这是 Docker 文档中排名第一的已知问题。这是当前的发行说明参考。

容器中意外的文件权限 AUFS 中的一个特性会阻止权限在上层和下层之间按可预测的方式传播。这可能会导致访问私钥、数据库实例等出现问题。有关完整信息和解决方法,请参阅 Github Issue 783。

可以找到提到的解决方法在 Github 上这里

相关内容