Rm

無法(強制)刪除 Docker 建構中的目錄

  • April 15, 2015

有了這個 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

根據 Docker 開發討論,這是 Docker 文件中排名第一的已知問題。這是目前的發行說明參考。

容器中的意外文件權限 AUFS 中的一個特性會阻止權限在上層和下層之間以可預測的方式傳播。這可能會導致訪問私鑰、數據庫實例等出現問題。有關完整資訊和解決方法,請參閱 Github 問題 783。

提到的解決方法可以在 Github 上找到

引用自:https://unix.stackexchange.com/questions/195975