【问题标题】:Access Host folder path from Docker Container which runs C# Windows Application从运行 C# Windows 应用程序的 Docker 容器访问主机文件夹路径
【发布时间】:2021-04-23 16:05:26
【问题描述】:

我有多个容器在 centOS 中运行 Windows 控制台应用程序,它们创建报告文件,我可以通过 docker-compose.yml 中指定的卷访问主机服务器中的输出文件

report_output:
    image: report:latest
    ports: ["80:80"]
    container_name: profit_report
    restart: always
    volumes:
     - /home/profit_report/:/app/report_output

我正在编写另一个 C# 控制台应用程序 delete_report,它会删除超过 2 年的报告。如果我在新控制台中添加 C# 代码以访问路径 /home/profit_report/,它是否能够从内部容器“delete_report”访问路径?

或者我如何从delete_report容器访问report_output容器的路径/app/report_output以直接删除容器内的文件。

是从容器有效地连接到主机服务器路径,还是有效地连接到所需的容器和内部访问路径?

所有容器都绑定在同一个网络中。

【问题讨论】:

  • 这听起来像你有一个基于文件的应用程序;您不希望容器的文件系统与主机系统或彼此隔离。直接在主机上运行这些应用程序是否更有意义?

标签: c# docker centos


【解决方案1】:

撰写配置:

volumes:
     - /home/profit_report/:/app/report_output

告诉我们,那个文件夹

/home/profit_report

将被安装在容器中,这意味着对其进行任何操作, 也适用于具有此挂载的容器,因为它只是一个挂载。

因此,您可以创建另一个具有相同挂载的容器并根据需要操作文件。

所以你删除报告应用程序,可以像这样用 mount 容器化:

volumes:
         - /home/profit_report/:/app/report_to_delete (or any path that you want)

在这个容器内你只需要从挂载路径(/app/report_to_delete)获取文件

【讨论】:

  • +1 表示建议......这是否意味着,我无法从 delete_report 容器内部访问 report_output 容器文件夹/文件?只是想在我对 docket-compose.yml 进行代码更改以在 delete_report 服务配置部分中添加其他容器的卷之前进行确认。
  • 是的,容器与主机和其他容器(包括 FS)完全隔离,您始终需要提供文件夹\文件\卷\等的挂载以授予容器访问权限
猜你喜欢
  • 1970-01-01
  • 2022-10-06
  • 2021-08-17
  • 1970-01-01
  • 2017-12-29
  • 2019-08-23
  • 1970-01-01
  • 2020-10-08
  • 1970-01-01
相关资源
最近更新 更多