【问题标题】:Docker mount files to my local system while running the container运行容器时 Docker 将文件挂载到我的本地系统
【发布时间】:2021-10-24 07:20:37
【问题描述】:

我正在使用图像 academind/node-example-1,它是一个简单的节点图像。你可以在这里查看https://hub.docker.com/r/academind/node-example-1。我在运行图像时想要什么,我想获得与图像中相同的文件夹和文件结构。我知道这可以通过音量来完成。当我使用喜欢时

docker run -d --rm --name node-test -p 5000:80 academind/node-example-1

一切正常但我想在运行时获取代码库,所以我尝试了

docker run -d --rm --name node-test -p 5000:80 -v /Users/souravbanerjee/Documents/node-docker:node-example-1 academind/node-example-1 

这里 node-docker 是我希望代码所在的本地文件夹。它运行但没有在本地机器中获取文件,我怀疑 source_path:destination_path 的位置。请纠正我,请告诉我我哪里错了,或者该怎么做,或者我的整个想法是否朝着错误的方向发展。

谢谢。

【问题讨论】:

    标签: node.js docker docker-compose


    【解决方案1】:

    如果您阅读official doc,您会看到: 的第一部分应该是主机中某处的路径(您正在做的),而后面的部分应该与路径匹配“在“容器内”(而不是您使用图像名称)。假设/app 是路径(我自己上过那门课程,这是 AFAIR 的路径),它应该是:

    docker run -d --rm --name node-test -p 5000:80 -v /Users/souravbanerjee/Documents/node-docker:/app academind/node-example-1
    

    【讨论】:

    • 感谢您的回答,我也这样做了,但是 :/app 也没有克隆代码,还有其他我需要做的吗。
    • 将代码从容器内部克隆到主机是必须使用docker cp 命令来实现的。
    • 谢谢,我没有这门课程,我只是通过搜索找到的,请问您可以在您的课程论坛中询问,关于这个,正确的方法是什么,我不能这样做使用 -v 或“cp”是正确的过程?
    • docker cp 是要走的路。如果它对您不起作用,它应该告诉您原因。尝试检索它。
    【解决方案2】:

    我认为正确的语法是在卷映射中输入驱动器信息。

    例如。用户/xxxx/:一些/驱动器/位置

    但是,这会将 xxxx 处的空驱动器映射到“位置”文件夹的顶部。从而删除容器中的现有文件。

    如果您有兴趣查看容器中文件的内容,您应该考虑使用“Docker CP”命令。

    人们经常使用卷挂载将数据(即持久性数据库文件)推送到容器中。

    或者,将日志文件写入应用程序容器内的卷安装位置。然后这些文件会反映在您的本地驱动器上

    【讨论】:

      【解决方案3】:

      您可以使用命令将文件复制到当前主机目录

      docker cp node-test:/app .
      

      容器运行时

      【讨论】:

      • 谢谢,我不能用音量吗?
      • 可以,但是比较麻烦。您无法让 Docker 自动使用卷来执行此操作,因此您必须将目录挂载到容器中除 /app 之外的目录中。例如-v $(pwd):/copydest,然后进入容器并将文件从/app复制到/copydest
      猜你喜欢
      • 2018-06-01
      • 1970-01-01
      • 2021-03-28
      • 2017-12-20
      • 2016-01-29
      • 2021-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多