【问题标题】:Unable to manipulate files and directories while building docker image构建 docker 映像时无法操作文件和目录
【发布时间】:2017-12-13 06:55:54
【问题描述】:

在 Dockerfile 我有这个:

FROM jboss/base-jdk:8

ENV WILDFLY_VERSION 10.1.0.Final
ENV JBOSS_HOME /opt/jboss/wildfly
ENV config $JBOSS_HOME/wildfly-10.1.0.Final/domain/configuration
ENV master_address 192.168.56.10
ENV tmp /tmp/wildfly-10.1.0.Final/domain/configuration

COPY wildfly-10.1.0.Final.tar.gz /tmp/wildfly-10.1.0.Final.tar.gz
RUN cd /tmp/
RUN tar xf /tmp/wildfly-10.1.0.Final.tar.gz -C /tmp/

RUN sed -i -e 's/noed_name/$HOSTNAME/g' $tmp/host.xml
RUN sed -i -e 's/host_master/$master_address/g' $tmp/host.xml
RUN sed -i -e 's/secret_value/$secret/g' $tmp/host.xml

RUN mv /tmp/wildfly-10.1.0.Final $JBOSS_HOME/
RUN rm /tmp/wildfly-10.1.0.Final.tar.gz

RUN secret=$(echo $HOSTNAME | base64 )

ENV LAUNCH_JBOSS_IN_BACKGROUND true

EXPOSE 8330
EXPOSE 9999

CMD ["/opt/jboss/wildfly/wildfly-10.1.0.Final/bin/domain.sh", "-b", "0.0.0.0", "-bmanagement", "0.0.0.0"]

错误:无法删除/tmp/wildfly-10.1.0.Final下的所有文件和目录

 mv: cannot remove '/tmp/wildfly-10.1.0.Final/welcome-content/wildfly.css': No such file or directory
...
The command '/bin/sh -c mv /tmp/wildfly-10.1.0.Final $JBOSS_HOME/' returned a non-zero code: 1

PS:在我无法运行tar之前,该命令返回No such a file or directory,直到我切换到tmp文件夹,还有sed命令。

【问题讨论】:

标签: docker wildfly


【解决方案1】:

在我的机器中,我没有遇到您显示的问题。我还有这个:

Step 14/18 : RUN rm /tmp/wildfly-10.1.0.Final.tar.gz
 ---> Running in c4a839a8bf8b
rm: cannot remove '/tmp/wildfly-10.1.0.Final.tar.gz': Operation not permitted

我能够使用适当的用户修复 rm 周围的问题:

...
USER root
RUN rm /tmp/wildfly-10.1.0.Final.tar.gz
USER jboss
...

我从这里下载了wildfly:

http://download.jboss.org/wildfly/10.1.0.Final/wildfly-10.1.0.Final.tar.gz

那么你的 Dockerfile 就变成了这样:

FROM jboss/base-jdk:8

ENV WILDFLY_VERSION 10.1.0.Final
ENV JBOSS_HOME /opt/jboss/wildfly
ENV config $JBOSS_HOME/wildfly-10.1.0.Final/domain/configuration
ENV master_address 192.168.56.10
ENV tmp /tmp/wildfly-10.1.0.Final/domain/configuration

COPY wildfly-10.1.0.Final.tar.gz /tmp/wildfly-10.1.0.Final.tar.gz
RUN cd /tmp/
RUN tar xf /tmp/wildfly-10.1.0.Final.tar.gz -C /tmp/

RUN sed -i -e 's/noed_name/$HOSTNAME/g' $tmp/host.xml
RUN sed -i -e 's/host_master/$master_address/g' $tmp/host.xml
RUN sed -i -e 's/secret_value/$secret/g' $tmp/host.xml

RUN mv /tmp/wildfly-10.1.0.Final $JBOSS_HOME/

USER root
RUN rm /tmp/wildfly-10.1.0.Final.tar.gz
USER jboss

RUN secret=$(echo $HOSTNAME | base64 )

ENV LAUNCH_JBOSS_IN_BACKGROUND true

EXPOSE 8330
EXPOSE 9999

CMD ["/opt/jboss/wildfly/wildfly-10.1.0.Final/bin/domain.sh", "-b", "0.0.0.0", "-bmanagement", "0.0.0.0"]

它正在工作:

$ docker build .
..
..
..
Step 21/21 : CMD /opt/jboss/wildfly/wildfly-10.1.0.Final/bin/domain.sh -b 0.0.0.0 -bmanagement 0.0.0.0
 ---> Running in 06a9043977bc
 ---> ab4b6a623f3f
Removing intermediate container 06a9043977bc
Successfully built ab4b6a623f3f

您可以再次尝试丢弃之前的 chache:docker build . --no-cache

【讨论】:

  • 仍然无法从/tmp 中删除文件夹!!当我更改USERWORKDIR 时,我能够在/opt/jboss 下工作,但不能在/tmp 下工作
  • 我有No such a file or directory 而不是Operation not permitted
  • Docker 版本?
  • Docker 版本 17.05.0-ce,构建 89658be
猜你喜欢
  • 2021-03-17
  • 1970-01-01
  • 2021-05-26
  • 2021-12-24
  • 1970-01-01
  • 2015-11-02
  • 1970-01-01
  • 2020-03-23
  • 1970-01-01
相关资源
最近更新 更多