为什么在WORKDIR之后创build的目录消失了

目前,我有以下的docker文件

FROM ubuntu:14.04 ADD . /var/www/html/xxx RUN mkdir -p /tmp/debug1 WORKDIR /var/www/html/xxx RUN mkdir -p /var/www/html/xxx/debug2 

docker-compose up -d

我通过使用以下命令进入容器

 docker exec -it xxx_xxx_1 bash 

令我惊奇

  • /tmp/debug1被创build
  • /var/www/html/xxx/debug2 创build

但是,如果我走进容器内使用

 docker run -it xxx bash 

我知道的是

  • /tmp/debug1被创build
  • /var/www/html/xxx/debug2被创build

我可以知道为什么有这样的行为,在WORKDIR之后?

这听起来像是在播放音量。 你能用你的撰写文件更新你的问题吗?

我假设你已经在构build文件中定义了一个卷,它把某些内容挂载到/var/www/html

如果这是真的,那么这将解释你所看到的。 当你不使用compose运行容器时,你会看到/var/www/html/xxx/debug2因为/var/www/html包含了最初在/var/www/html/xxx/debug2生成时创build的内容。 如果用compose运行它,docker将一个主机目录或一个docker卷挂载到/var/www/html ,在这种情况下,原来那里的所有东西都会被“隐藏”。 如果你的volume / host-dir是空的,那么/var/www/html也是空的。