【问题标题】:Writing and reading files to/from host system on Docker在 Docker 上向/从主机系统写入和读取文件
【发布时间】:2018-09-06 19:18:08
【问题描述】:

上下文

我有一个 Java Spring Boot 应用程序,它已部署在 Docker 容器上运行。准确地说,我正在使用 Docker Toolbox。 该应用程序公开了一些 REST API 来上传和下载文件。该应用程序在 Docker 上运行良好,即我能够使用 API 上传和下载文件。

问题:

  1. 在应用程序中,我将路径硬编码为“C:\SomeFolder”。它存储在 Docker 容器上的哪个位置?
  2. 在 Docker 上运行时如何强制应用程序使用 Host 文件系统而不是 Docker 的文件系统?

【问题讨论】:

    标签: docker filesystems


    【解决方案1】:

    这一切都由 Docker Volumes 完成。

    在 Docker 文档中了解更多信息:

    https://docs.docker.com/storage/volumes/

    【讨论】:

      【解决方案2】:

      在应用程序中,我将路径硬编码为“C:\SomeFolder”。它存储在 Docker 容器的哪个位置?

      c:\SomeFolder,假设您有一个 Windows 容器。不过,这是您通常通过命令行选项或环境变量设置的那种参数。

      在 Docker 上运行时如何强制应用程序使用 Host 文件系统而不是 Docker 的文件系统?

      使用docker run -v 选项或等效选项将主机上的某个目录挂载到该位置。无论主机上该目录的内容如何,​​都会在启动时替换容器中的内容,之后主机中的更改应反映在容器中,反之亦然

      如果您有机会重新考虑这种设计,就会发现文件所有权等方面存在许多潜在问题。规避这些问题的最简单方法是将数据存储在数据库之类的地方(它本身可能会或可能不会在 Docker 中运行),并使用网络 I/O 向容器发送数据和从容器发送数据,并尽可能少地存储在容器文件系统。 docker run -v 是在典型的面向服务器的使用中注入配置文件和获取日志文件的绝佳方式。

      【讨论】:

        猜你喜欢
        • 2015-10-05
        • 1970-01-01
        • 1970-01-01
        • 2021-02-25
        • 2016-08-21
        • 1970-01-01
        • 2019-09-20
        • 2020-03-12
        相关资源
        最近更新 更多