dockerdocker在哪里存储日志?

我打包项目到docker的docker图像,我试图访问日志,但没有日志。

Dockerfile

FROM jetty:9.2.10 MAINTAINER Me "me@me.com" ADD ./target/abc-1.0.0 /var/lib/jetty/webapps/ROOT EXPOSE 8080 

Bash脚本启动docker镜像:

 docker pull me/abc docker stop abc docker rm abc docker run --name='abc' -d -p 10908:8080 -v /var/log/abc:/var/log/jetty me/abc:latest 

图像正在运行,但是我没有在/var/log看到任何docker/var/log

我已经尝试了一个docker run -it jetty bash ,但是没有看到任何jettylogin在/var/log中。

我缺less一个参数,使docker输出日志或输出到/var/log/jetty以外的地方吗?

为什么你没有看到日志

2件事要注意:

  1. 运行docker run -it jetty bash将启动一个新的容器,而不是将您连接到现有的守护进程容器。

  2. 它会调用bash而不是在该容器中启动jetty,所以它不会帮助您从任何一个容器中获取日志。

所以这个互动容器在任何情况下都不会帮助你。

但也…

JettyLogs无论如何都被禁用

另外,您不会在标准位置看到日志(例如,如果您试图使用docker exec来读取日志或将其放入卷中),这很简单,因为Jetty Docker文件完全禁用了日志logging。

如果你看看docker:9.2.10 Dockerfile ,你会看到这一行:

 && sed -i '/jetty-logging/d' etc/jetty.conf \ 

这很好地删除了引用jetty-logging.xml默认日志configuration的整个行。

那该怎么办?

docker logs读取docker logs

Docker让你访问容器的标准输出。

做完这些之后:

 docker run --name='abc' -d -p 10908:8080 -v /var/log/abc:/var/log/jetty me/abc:latest 

你可以简单地做到这一点:

 docker logs abc 

并与以下类似的问候:

 Running Jetty: 2015-05-15 13:33:00.729:INFO::main: Logging initialized @2295ms 2015-05-15 13:33:02.035:INFO:oejs.SetUIDListener:main: Setting umask=02 2015-05-15 13:33:02.102:INFO:oejs.SetUIDListener:main: Opened ServerConnector@73ec519{HTTP/1.1}{0.0.0.0:8080} 2015-05-15 13:33:02.102:INFO:oejs.SetUIDListener:main: Setting GID=999 2015-05-15 13:33:02.106:INFO:oejs.SetUIDListener:main: Setting UID=999 2015-05-15 13:33:02.133:INFO:oejs.Server:main: jetty-9.2.10.v20150310 2015-05-15 13:33:02.170:INFO:oejdp.ScanningAppProvider:main: Deployment monitor [file:/var/lib/jetty/webapps/] at interval 1 2015-05-15 13:33:02.218:INFO:oejs.ServerConnector:main: Started ServerConnector@73ec519{HTTP/1.1}{0.0.0.0:8080} 2015-05-15 13:33:02.219:INFO:oejs.Server:main: Started @3785ms 

使用docker help logs获取更多详细信息。

定制

显然,你的其他select是恢复默认的docker文件,或创build你自己的dockerizeddocker。