在Docker上向/从主机系统写入和读取文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Docker上向/从主机系统写入和读取文件相关的知识,希望对你有一定的参考价值。

语境:

我有一个Java Spring Boot应用程序,它已部署在Docker Container上运行。我使用Docker Toolbox是准确的。该应用程序公开了一些REST API来上传和下载文件。该应用程序在Docker上运行正常,即我可以使用API​​上传和下载文件。

问题:

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

这一切都是由Docker Volumes完成的。

在Docker文档中阅读更多相关内容:

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

另一答案

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

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

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

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

如果您有机会重新考虑此设计,那么围绕文件所有权等存在许多潜在的问题。解决这些问题的最简单方法是将数据存储在某个地方,例如数据库(可能在Docker中运行,也可能不运行),并使用网络I / O向容器发送数据或从容器发送数据,并尽可能少地存储在容器中。容器文件系统。 docker run -v是一种很好的方法,可以在典型的面向服务器的用途中注入配置文件并获取日志文件。

以上是关于在Docker上向/从主机系统写入和读取文件的主要内容,如果未能解决你的问题,请参考以下文章

Docker数据卷管理

将文件从 docker 容器写入 AWS 上的主机实例

docke存储

docker-管理应用程序数据

Docker进阶之六:管理应用程序数据

将Docker主机数据挂在到容器中