Docker 创建的文件未保存到卷中

问题描述 投票:0回答:1

我的应用程序生成日志,我正在尝试将它们保存在卷上。但是,当创建并写入生成的日志文件时,它不会保存到卷中。

Docker Desktop file system

我可以看到生成的日志文件和卷不同步。 这是我运行的命令:

docker volume create be.identity.volume
docker run -d --name be.identity.container -p 8080:8080 -p 8081:8081 -v be.identity.volume:/app/Logging be.identity

我期望生成日志时它们会自动保存到卷中。我也尝试使用此命令安装文件,但发生了同样的情况:

docker run -d --name be.identity.container -p 8080:8080 -p 8081:8081 -v C:/Users/myuser/source/repos/Project/_docker/volumes/BE.Identity:/app/Logging be.identity

我注意到将文件放入主机路径会将它们添加到docker容器中,但容器中生成的日志文件不会添加到主机路径中。 我对文件挂载和卷的工作方式是否有任何误解?如何持久保存应用程序生成的日志文件和其他类型的数据?

我正在运行一个 asp.net 应用程序,该应用程序使用 serilog 库将日志生成到文件夹 /app/Logging 中。我希望生成的文件在卷中可用,但是使用 docker 桌面,当我访问卷数据时,我可以看到一条消息“无数据可显示”

检查容器时我发现了以下信息:

"Mounts": [
{
    "Type": "volume",
    "Name": "be.identity.volume",
    "Source": "/var/lib/docker/volumes/be.identity.volume/_data",
    "Destination": "/app/Logging",
    "Driver": "local",
    "Mode": "z",
    "RW": true,
    "Propagation": ""
}

], “卷”:空,

还向容器运行此命令:

$ pwd

/应用程序/日志记录

$触摸示例.txt

触摸:无法触摸“example.txt”:权限被拒绝

$ sudo touch example.txt

sh:10:sudo:未找到

$ chmod o+w /app/Logging

chmod:更改“/app/Logging”的权限:不允许操作

$触摸示例.txt

触摸:无法触摸“example.txt”:权限被拒绝

docker
1个回答
0
投票

发现我使用了错误的路径来生成日志。我在 Windows 计算机上运行,因此我配置了路径

Logging\\Logs.txt
。由于 Windows 上的 docker 使用 WSL,我不得不将其更改为
Logging/Logs.txt

© www.soinside.com 2019 - 2024. All rights reserved.