首页 > 解决方案 > docker-in-docker 卷上的 $(pwd) 挂载了意外的目录

问题描述

例子:

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?它不在~/test/dind-volumes主机操作系统上。share并且tomita-cfg是来自主机操作系统的文件夹,但路径完全不同,它甚至不是从~

标签: dockerdocker-volumedocker-in-docker

解决方案


挂载到新容器中的/app目录是主机目录中的任何目录。

不是 Docker 中的 Docker,因为我理解该术语的意思是:您没有在 Docker 容器内运行 Docker 的第二个副本,您只是在容器内访问主机的 Docker 套接字。

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


推荐阅读