can';t在docker中的docker中列出文件(dind)

can';t在docker中的docker中列出文件(dind),docker,Docker,我面对这个奇怪的问题,无法解释原因 $ docker run -d --name dind --privileged --net=host -v `pwd`:/app -w /app docker:stable-dind fe66d6e7e5effcf15e439a332a2368fddab810e9bc8ac3445392c8e56b0aa38a $ docker exec dind ls Dockerfile $ docker exec dind docker run -v `pwd`:

我面对这个奇怪的问题,无法解释原因

$ docker run -d --name dind --privileged --net=host -v `pwd`:/app -w /app docker:stable-dind
fe66d6e7e5effcf15e439a332a2368fddab810e9bc8ac3445392c8e56b0aa38a

$ docker exec dind ls
Dockerfile

$ docker exec dind docker run -v `pwd`:/app -w /app alpine ls 


$ docker exec dind docker build -t demo .
Sending build context to Docker daemon  521.7kB
Step 1/24 : FROM alpine
那么为什么我在docker中运行的docker容器中看不到我的文件呢


为什么它可以用命令
docker build
读取文件
Dockerfile
,但不能
docker run

这是因为代码中的
pwd
将在主机中解析,而不是在容器中解析,因此
容器中的容器
将获取主机的当前目录,不是容器机的当前目录,您可以通过更改以下命令来证明:

$ docker exec dind docker run -v `pwd`:/app -w /app alpine ls $docker exec dind docker run-v`pwd`:/app-w/app-ls 到

$docker exec dind docker run-v/app:/app-w/app-ls 然后,您将看到Dockerfile输出。仅供参考

$ docker exec dind docker run -v /app:/app -w /app alpine ls