我想下载Docker容器日志到我的本地。我知道我的集装箱身份。
现在,我使用df -h
查找docker文件路径。就像这个/data/docker/overlay2/ea3e1ad0ccdee0e41d83722dfc6bf913250abd57918fecabd1067736b3e44305/merged
。但是我有多个容器,很难知道我的容器的文件路径。
根据我的集装箱id,我怎么知道ea3e1ad0ccdee0e41d83722dfc6bf913250abd57918fecabd1067736b3e44305
。
发布于 2018-07-27 05:50:05
列出容器
docker ps
在存在日志的容器内导航。
docker exec -it ContainerId bash
在容器中找到您的日志
bash-4.2$ cd yourapplication/path/log/
出口集装箱
bash-4.2$ exit
复制到本地位置
docker cp edd5064178db:yourapplication/path/log/request.log /your/local/location
发布于 2019-02-14 12:52:50
您可以使用docker inspect
找到与容器关联的图像层。
可能有一个更干净的解决方案,但我能够在xargs
和jq
的帮助下找到容器id。
docker ps -a -q | xargs docker inspect | jq '.[] | select(.GraphDriver.Data.LowerDir | contains("ea3e1ad0ccdee0e41d83722dfc6bf913250abd57918fecabd1067736b3e44305")) | .Id'
docker ps -a -q
获取所有容器Ids的列表。xargs docker inspect
来获取每个容器的详细信息。jq
搜索列表,并返回引用GraphDriver
对象中图像层的任何容器的Id
。发布于 2018-07-27 06:12:44
您可以提取精确的mergeddir (与容器id不同),如下所示:
$ docker inspect --format='{{json .GraphDriver.Data.MergedDir}}' container-id
"/var/lib/docker/overlay2/the-string-you-are-searching-for/merged"
https://stackoverflow.com/questions/51553395
复制