代码之家  ›  专栏  ›  技术社区  ›  cjds

如何在父Docker sharing docker.sock创建的子Docker中装入卷

  •  0
  • cjds  · 技术社区  · 6 年前

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

    我不想在Docker中使用完全Docker,因为在Docker中列出了与之相关的所有问题 jpetazzo's article

    我也想避免 volume-from 因为我不能编辑前面提到的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
    
    1 回复  |  直到 6 年前
        1
  •  0
  •   BMitch    6 年前

    在主机上和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套接字交谈时使用容器路径名,该套接字将与主机上的路径匹配。