$(pwd) at docker-in-docker volume mounts unexpected directory

$(pwd) at docker-in-docker volume mounts unexpected directory

示例:

pavel@Z546:~/test/dind-volumes$ ls
test.txt
pavel@Z546:~/test/dind-volumes$ docker run -v /var/run/docker.sock:/var/run/docker.sock -v $(pwd):/app -w /app -it docker sh
/app # ls
test.txt
/app # pwd
/app
/app # docker run -v $(pwd):/app2 -w /app2 -it alpine sh
/app2 # ls
share       tomita-cfg
/app2 # pwd
/app2

哪个位置 -v $(pwd):/app2 坐骑?它不是主机 OS 上的 ~/test/dind-volumessharetomita-cfg 是主机 OS 的文件夹,但路径完全不同,它甚至不是从 ~

开始的

安装到新容器中的目录是主机上 /app 目录中的目录。

不是 Docker in Docker 我理解这个词的意思是:你没有 运行 在里面 Docker 的第二个副本Docker 容器,您只是在容器内访问主机的 Docker 套接字。

在你展示的场景中,当你在一个装有主机的 Docker 套接字和 运行 docker run -v $(pwd):/app2 ... 的容器内时,首先容器内的 shell 展开$(pwd)/app,然后它向 Docker 守护程序发送请求以启动一个容器,其中 /app 绑定安装到 /app2。从 Docken 守护进程的角度来看,这与 运行 直接在主机上执行相同的命令没有区别。