【发布时间】:2019-03-14 16:05:52
【问题描述】:
我有一个简单的设置,在 python 应用程序中设置了 python 的日志记录模块,如下所示:
app_logger = logging.getLogger('main_thread')
file_handler = RotatingFileHandler('/home/pi/FaunderGateway_Log.log', maxBytes=10000000, backupCount=5)
formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(name)s - %(message)s')
file_handler.setFormatter(formatter)
app_logger.addHandler(file_handler)
我有一个 RotatingFileHandler,它的绝对路径为“/home/pi/FaunderGateway_Log.log”(如果有人想知道,这个应用程序将在树莓派上运行),现在我正在尝试使用 docker 将应用程序容器化。
在构建并尝试运行我的容器后,出现错误:
[Errno 2] No such file or directory: '/home/pi/FaunderGateway_Log.log'
现在,我知道 docker 在容器中拥有自己的文件系统,与主机的 (pi) 文件系统分开,但我想告诉 docker 让我的 python 应用程序正常登录到主机的绝对路径 /home/pi/。 我怎样才能做到这一点?
我阅读了一些其他提到卷的线程,但我并不是很了解它们。
我正在使用这个命令来运行我的容器:
sudo docker run --privileged fg
--privileged 标志是为了让我可以访问 pi 上的 /dev/mem 文件,以进行 GPIO 操作。
更新:请注意,我希望我的 docker 容器在主机路径“/home/pi”中创建日志文件,我不想创建“/home/pi” " 容器内的目录。
【问题讨论】:
-
你应该确保你的容器有“/home/pi”路径。
-
@ThuYeinTun 我希望我的容器在主机的“/home/pi”路径上生成日志文件,这样即使在容器停止运行后我也可以打开日志文件。
-
在这种情况下,您应该更新您的问题以包含该信息。您可以使用 docker volume 将主机的目录挂载到 docker 容器的目录中。然后,您在该目录中写入的任何内容都将在主机中可用。
-
@ThuYeinTun 更新并加粗了重要部分:D 感谢您提供指向文档的链接!它有很大帮助。我不知道这叫做绑定挂载。
标签: python docker logging raspberry-pi3