使用这个 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/rm
在php:5.4-fpm
容器里。为什么在第一种情况下docker build
无法删除/var/lib/apt/lists
,为什么即使有标志,它也会以非零退出状态退出-f
?
答案1
根据 Docker 开发讨论,这是 Docker 文档中排名第一的已知问题。这是当前的发行说明参考。
容器中意外的文件权限 AUFS 中的一个特性会阻止权限在上层和下层之间按可预测的方式传播。这可能会导致访问私钥、数据库实例等出现问题。有关完整信息和解决方法,请参阅 Github Issue 783。
可以找到提到的解决方法在 Github 上这里