对于您所说的“ Docker-in-Docker”和“ dind”而言,此设置实际上并不是Docker-in-
Docker:您的container1正在向影响容器Container2的主机Docker守护进程提供指令。
Host Container1 /----- (Docker) | Container2 ---->
(NB:这 是 通常用于CI型设置中的推荐路径“多克尔合泊坞”通常是指container1运行其自己的,独立的,多克尔守护进程,这趋向于不被推荐。)。
由于container1正在向主机的Docker提供指令,并且主机的Docker正在启动container2,因此任何
docker run-v路径始终是主机的路径。除非您知道某个特定目录已经安装到您的容器中,否则很难与“子容器”共享文件。
解决此问题的一种方法是断言存在某种共享路径:
docker run -v $PWD/exchange:/exchange -v /var/run/docker.sock:/var/run/docker.sock -e EXCHANGE_PATH=$PWD/exchange --name container1 ...# from within container1mkdir $EXCHANGE_PATH/container2echo hello world > $EXCHANGE_PATH/container2/file.txtdocker run -v $EXCHANGE_PATH/container2:/data --name container2 ...
当我在过去做到了这一点(对测试设置是希望推出辅助容器)我用一片苦心
docker create,
docker cp,
dockerstart,
docker cp,
Docker rm序列。这是极其手动的操作,但是它的优点是,
dockercp即使您正在从容器内部与主机的Docker守护程序进行通信,a 的“本地”端也始终是当前文件系统上下文。



