示例:
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
是主机操作系统的文件夹,但是路径完全不同,甚至不是从~
开始
答案 0 :(得分:1)
装入新容器的目录就是主机上/app
目录中的目录。
这不是 Docker in Docker,正如我理解的意思:您没有在Docker容器中运行第二个Docker副本,您只是在访问主机的Docker套接字在容器内可用。
在所显示的场景中,当您在装有主机Docker套接字并运行docker run -v $(pwd):/app2 ...
的容器内时,首先容器内的shell将从$(pwd)
扩展为/app
,然后它向Docker守护程序发送一个请求,以启动将/app
绑定安装到/app2
的容器。从Docken守护程序的角度来看,这与直接在主机上运行同一命令没有区别。