我的应用程序生成日志,我正在尝试将它们保存在卷上。但是,当创建并写入生成的日志文件时,它不会保存到卷中。
我可以看到生成的日志文件和卷不同步。 这是我运行的命令:
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”:权限被拒绝
发现我使用了错误的路径来生成日志。我在 Windows 计算机上运行,因此我配置了路径
Logging\\Logs.txt
。由于 Windows 上的 docker 使用 WSL,我不得不将其更改为 Logging/Logs.txt