我正在使用docker-compose运行几个容器。我可以使用命令docker-compose logs查看应用程序日志。但是我想访问原始日志文件以将其发送到某个地方,例如?它位于哪里?我猜每个容器(容器内?)都有单独的日志,但我可以在哪里找到它?
docker-compose
docker-compose logs
brvekthn1#
容器的日志可在以下位置找到:
/var/lib/docker/containers/<container id>/<container id>-json.log
(if使用默认日志格式json)
zvms9eto2#
您可以docker inspect每个容器以查看其日志的位置:
docker inspect
docker inspect --format='{{.LogPath}}' $INSTANCE_ID
而且,如果您试图找出日志在哪里管理它们的集体大小,或者调整日志记录本身的参数,您会发现以下内容是相关的。
正在修复为日志保留的空间量
这摘自清除日志历史记录功能的请求(问题1083):Docker 1.8和Docker-compose 1.4已经存在一种使用Docker compose日志驱动程序和log-opt max-size限制日志大小的方法:
mycontainer: ... log_driver: "json-file" log_opt: # limit logs to 2MB (20 rotations of 100K each) max-size: "100k" max-file: "20"
在版本“2”的Docker合成文件中,语法稍有更改:
version: '2' ... mycontainer: ... logging: #limit logs to 200MB (4rotations of 50M each) driver: "json-file" options: max-size: "50m" max-file: "4"
(note在这两种语法中,数字都表示为带引号的字符串)
docker-compose logs未终止时可能出现的问题
logs
tvmytwxo3#
要查看每个container的日志占用了多少空间,请使用以下命令:
docker ps -qa | xargs docker inspect --format='{{.LogPath}}' | xargs ls -hl
(you在ls之前可能需要sudo)。
ls
sudo
3vpjnl9f4#
docker inspect <containername> | grep log
kq0g1dla5#
在Windows上,默认位置为:C:\ProgramData\Docker\containers\<container-id>-json.log.
C:\ProgramData\Docker\containers\<container-id>-json.log
mefy6pfw6#
这里是Windows 10 + WSL 2 (Ubuntu 20.04), Docker version 20.10.2, build 2291f61这么说吧DOCKER_ARTIFACTS == \\wsl$\docker-desktop-data\version-pack-data\community\docker容器日志的位置可在中找到DOCKER_ARTIFACTS\containers\[Your_container_ID]\[Your_container_ID]-json.log下面是一个例子
Windows 10 + WSL 2 (Ubuntu 20.04), Docker version 20.10.2, build 2291f61
DOCKER_ARTIFACTS == \\wsl$\docker-desktop-data\version-pack-data\community\docker
DOCKER_ARTIFACTS\containers\[Your_container_ID]\[Your_container_ID]-json.log
rkkpypqq7#
为了直接查看日志文件,我用途:
docker inspect $1 | grep 'LogPath' | sed -n "s/^.*\(\/var.*\)\",$/\1/p" | xargs sudo less
以./viewLogs.sh CONTAINERNAME运行
./viewLogs.sh CONTAINERNAME
bmp9r5qi8#
截至2018年8月22日,日志见:
/data/docker/containers/<container id>/<container id>-json.log
vq8itlhq9#
要查看每个容器的日志大小,可以使用以下bash命令:
for cont_id in $(docker ps -aq); do cont_name=$(docker ps | grep $cont_id | awk '{ print $NF }') && cont_size=$(docker inspect --format='{{.LogPath}}' $cont_id | xargs sudo ls -hl | awk '{ print $5 }') && echo "$cont_name ($cont_id): $cont_size"; done
输出示例:
container_name (6eed984b29da): 13M elegant_albattani (acd8f73aa31e): 2.3G
9条答案
按热度按时间brvekthn1#
容器的日志可在以下位置找到:
(if使用默认日志格式json)
zvms9eto2#
您可以
docker inspect
每个容器以查看其日志的位置:而且,如果您试图找出日志在哪里管理它们的集体大小,或者调整日志记录本身的参数,您会发现以下内容是相关的。
正在修复为日志保留的空间量
这摘自清除日志历史记录功能的请求(问题1083):
Docker 1.8和Docker-compose 1.4已经存在一种使用Docker compose日志驱动程序和log-opt max-size限制日志大小的方法:
在版本“2”的Docker合成文件中,语法稍有更改:
(note在这两种语法中,数字都表示为带引号的字符串)
docker-compose logs
未终止时可能出现的问题logs
不会退出tvmytwxo3#
要查看每个container的日志占用了多少空间,请使用以下命令:
(you在
ls
之前可能需要sudo
)。3vpjnl9f4#
kq0g1dla5#
在Windows上,默认位置为:
C:\ProgramData\Docker\containers\<container-id>-json.log
.mefy6pfw6#
这里是
Windows 10 + WSL 2 (Ubuntu 20.04), Docker version 20.10.2, build 2291f61
这么说吧
DOCKER_ARTIFACTS == \\wsl$\docker-desktop-data\version-pack-data\community\docker
容器日志的位置可在中找到
DOCKER_ARTIFACTS\containers\[Your_container_ID]\[Your_container_ID]-json.log
下面是一个例子
rkkpypqq7#
为了直接查看日志文件,我用途:
以
./viewLogs.sh CONTAINERNAME
运行bmp9r5qi8#
截至2018年8月22日,日志见:
vq8itlhq9#
要查看每个容器的日志大小,可以使用以下bash命令:
输出示例: