我想收集Docker容器日志,默认情况下,删除容器时将删除日志文件。它会导致每次更新服务时丢失几个日志。如何在删除容器后保留日志文件? 或者,是否有另一种方法可以在不丢失的情况下从容器中收集所有日志?

分析解答

将有两种情况:

  • 如果您的日志是stdout或stderr,则可以在删除容器之前保存它们:
docker logs CONTAINER_ID > container.log
  • 如果您的日志存储在某些文件中,则在这种情况下,您可以在运行容器时将它们复制或为其挂载目录:
# Copy the logs out to the host
docker copy CONTAINER_ID:/path/to/your/log_file /host/path/to/store

# Mount a directory for them
docker run -d \
-v /host/path/to/store/logs:/container/path/stored/logs \
your-image