目前,我有以下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
已创建/var/www/html/xxx/debug2
是,不是创建的但是,如果我使用
docker run -it xxx bash
我意识到的是
/tmp/debug1
已创建/var/www/html/xxx/debug2
已创建我可以知道为什么在WORKDIR行之后有这种行为吗?
最佳答案
这听起来像是在播放音量。您可以使用撰写文件更新问题吗?
我假设您已经在compose文件中定义了一个将内容装载到/var/www/html
的卷
如果这是真的,那么这将解释您所看到的。当您运行不带compose的容器时,您会看到/var/www/html/xxx/debug2
,因为/var/www/html
包含最初在docker构建时创建的内容。如果使用compose运行它,则docker会将主机目录或docker卷挂载到/var/www/html
上,在这种情况下,原始存在的所有内容都会变为“不可见”。如果您的卷/主机目录为空,则/var/www/html
也为空。
关于docker - 为什么在WORKDIR之后创建的目录消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42408312/