【问题标题】:Access local directory files from a flask api running on docker container从 docker 容器上运行的烧瓶 api 访问本地目录文件
【发布时间】:2021-11-12 08:40:30
【问题描述】:

我的 API 必须访问位于主机服务器目录中的图像,将其存储在另一个目录中,并在主机服务器中多次访问整个目录。

目前,当我在 docker 容器上运行 API 并尝试访问主机目录中存在的图像时,我收到错误-

FileNotFoundError: [Errno 2] No such file or directory: 'W:/datasets/tmp/users/1.jpg'

我知道这是因为 API 在独立服务器上运行。目录很大,无法挂载到容器中,并且会实时增加。

在这种情况下如何访问文件系统? 在这种情况下,使用 paramiko 的 SSH 会有所帮助还是有其他方法?

【问题讨论】:

  • 是否可以将 NFS 卷附加到两台机器上?这将允许从远程机器添加文件并从带有附加 NFS 卷的 docker 容器访问它们
  • 我不这么认为。你能建议另一种方法吗?
  • 如何连接以从远程服务器访问图像?您是否为连接方法配置了正确的凭据?
  • 卷装不关心尺寸。实际上没有复制任何内容
  • 您可以创建绑定挂载,就像链接主机目录和容器中的目录

标签: python docker docker-volume


【解决方案1】:

在这种情况下使用 paramiko 进行 SSH 会有所帮助吗

不,您需要的是文件服务器,而不是 shell。如果您的主机上有 SSH 服务器,那么您可以使用 SFTP,但也可以使用 NFS,如注释

最终,如果您尝试访问与容器相同的机器上的目录,您应该使用卷挂载到容器中

无法挂载到容器中,因为它很大,并且会实时增加。

所以?你试过使用坐骑吗?您在“变大”和安装时遇到了哪些具体问题?

【讨论】:

  • 挂载的问题是我需要访问的目录会不断被另一个api实时更新并存储在本地机器上。当目录中有另一个添加时,将调用我不断运行的 api。如果我在第一次运行容器时挂载目录,我将不会获得将来要添加的更新文件。 “大”是指目录将不断更新和增加文件数量。
  • 所以?就像我说的,没有任何东西是复制的。文件始终保持同步,因此“首次运行”无关紧要,来自容器的未来更新会在主机中看到,而来自主机的更新会在容器中看到
  • 我现在明白了。然后我将尝试安装目录。谢谢!
  • 假设文件存在于服务器 1 并且 docker 容器正在服务器 2 上运行。那么我将如何挂载存在于另一台机器上的文件?
  • 如果它是外部主机,那么您将使用文件服务器,如已回答。 Docker 为挂载提供了 NFS 解决方案,但 (S)FTP 或与 S3 兼容的外部 API 调用也可以工作
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-07-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-18
相关资源
最近更新 更多