【问题标题】:Docker - accessing files inside container from hostDocker - 从主机访问容器内的文件
【发布时间】:2018-10-17 22:39:18
【问题描述】:

我是 docker 新手。

我运行了一个 node-10 映像,并在运行的容器中克隆了一个存储库,运行了启动带有文件观察器的服务器的应用程序。我需要访问容器内的代码库,在 Windows 主机上运行的 IDE 中打开它。如果这样做了,那么我还希望当我更改 IDE 中的文件时,这些更改会引发容器中的文件观察器。

感谢任何帮助。谢谢,

【问题讨论】:

    标签: node.js docker docker-container


    【解决方案1】:

    您正在寻找的概念称为volumes。您需要启动一个容器并在其中安装一个主机目录。对于容器,它将是一个常规文件夹,并将在其中创建文件。对您来说,它也将是一个常规文件夹。任何一方所做的更改都将对另一方可见。

    docker run -v /a/local/dir:/a/dir/in/your/container
    

    请注意,您可能会遇到permission issues,但您需要单独弄清楚。

    【讨论】:

      【解决方案2】:

      这取决于您想对这些文件做什么。

      您可以使用docker cp 命令将文件复制到容器或从容器复制文件。

      但是,在我看来,您正在使用 docker 进行开发,因此您应该挂载一个卷,也就是说,您在主机上挂载一个目录作为 docker 中的卷,因此写入该目录的任何内容都会显示出来在容器中,反之亦然。

      例如,如果您在 Windows 机器上拥有在 C:\src 中开发的代码库,那么您可以像 docker run -v c:\src:/app 一样运行 docker,其中 /app 是节点正在查找的位置。但是,对于 Windows 来说由于 Docker 在 Windows 中不是本机的,因此需要考虑一些事项,因此请先查看 documentation

      【讨论】:

        【解决方案3】:

        您好,我认为您应该对源代码使用挂载卷,并从您的 IDE 中正常编辑您的代码:

        docker run -it -v "$PWD":/app -w /app -u node node:10 yarn dev
        

        这里 docker 将创建一个图像,将工作目录设置为“/app”,将当前目录挂载到“/app”,并在启动时使用“node”用户(无 root 用户)运行“yarn dev”

        希望这会有所帮助。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-05-25
          • 1970-01-01
          • 2020-02-17
          • 2017-02-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-05-12
          相关资源
          最近更新 更多