docker-in-docker卷上的$(pwd)挂载了意外目录

时间:2019-10-23 22:52:02

标签: docker docker-volume docker-in-docker

示例:

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-volumessharetomita-cfg是主机操作系统的文件夹,但是路径完全不同,甚至不是从~开始

1 个答案:

答案 0 :(得分:1)

装入新容器的目录就是主机上/app目录中的目录。

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

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