如何在父docker共享docker.sock创建的子docker中装入卷

如何在父docker共享docker.sock创建的子docker中装入卷,docker,docker-compose,dockerfile,Docker,Docker Compose,Dockerfile,我正在尝试创建一个包装容器,以使用我无法修改的docker compose构建和运行一组容器。docker compose装载多个卷,但当从包装器docker内部启动docker compose时,这些卷仍然从主机装载,因为docker.sock是卷装载到主机的docker.sock 我不想在docker中使用完整docker,因为在中概述了与之相关的所有问题 我还想避免使用中的卷,因为我无法编辑前面提到的docker compose文件 有没有办法让这个代码段正确使用父docker文件,而不是

我正在尝试创建一个包装容器,以使用我无法修改的docker compose构建和运行一组容器。docker compose装载多个卷,但当从包装器docker内部启动docker compose时,这些卷仍然从主机装载,因为docker.sock是卷装载到主机的docker.sock

我不想在docker中使用完整docker,因为在中概述了与之相关的所有问题

我还想避免使用中的
卷,因为我无法编辑前面提到的docker compose文件

有没有办法让这个代码段正确使用父docker文件,而不是转到主机文件系统并从那里挂载它

FROM docker:latest

RUN mkdir -p /tmp/parent/ && echo "This is from the parent docker" > /tmp/parent/parent.txt
CMD docker run -v /tmp/parent/parent.txt:/root/parent.txt --rm ubuntu:18.04 bash -c "cat /root/parent.txt"
使用类似以下命令运行时:

docker build -t parent . && docker run --rm -v /var/run/docker.sock:/var/run/docker.sock parent

使您在主机上和docker映像内部的路径相同,例如

docker run -v /var/run/docker.sock:/var/run/docker.sock \
  -v /home/user:/home/user -w /home/user/project parent_image ...

通过将卷作为/home/user装载到映像内的同一位置,像带有相对绑定装载的
docker compose up
这样的命令在与docker套接字通信时将使用容器路径名,这将匹配主机上的路径。

docker run-v
绑定装载路径始终是主机的路径;您不能使用它将一个容器的文件系统空间装载到另一个容器上。为什么不能编辑
docker compose.yml
文件?