我正在尝试创建一个包装容器,以使用无法修改的docker-compose构建和运行一组容器。 docker-compose会挂载多个卷,但是从包装docker内部启动docker-compose时,由于docker .sock已被卷挂为主机的docker.sock,因此仍会从主机上挂载这些卷。
由于jpetazzo's article中概述的与其相关的所有问题,我不想不必使用完整的docker-in-docker。
我也想避免使用volume-from
,因为我无法编辑前面提到的docker-compose文件。
是否有办法使此代码段正确使用父码头工人的文件,而不是转到主机文件系统并从那里安装它?
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
答案 0 :(得分:0)
在主机映像和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套接字通信时将使用容器路径名,这将匹配路径在主机上。