在Docker上的主机系统中读写文件

时间:2018-09-06 04:39:29

标签: docker filesystems

上下文

我有一个Java Spring Boot应用程序,已将其部署为在Docker容器上运行。我正在使用Docker Toolbox进行精确测试。 该应用程序公开了一些REST API来上传和下载文件。该应用程序可以在Docker上正常运行,即我可以使用API​​上传和下载文件。

问题:

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

2 个答案:

答案 0 :(得分:-1)

这一切都由Docker Volumes完成。

在Docker文档中了解有关此内容的更多信息:

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

答案 1 :(得分:-1)

  

在应用程序中,我已将路径硬编码为“ C:\ SomeFolder”。这在Docker容器上存储在什么位置?

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

  

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

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

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