记一次用搜索引擎解决Docker日志地址问题

39 阅读3分钟

因为开发需要用到docker的应用日志文件,本来是很简单的问题,老手可能一眼就能给出答案,但是作为刚学会docker,命令也用的磕磕绊绊的人解决这个问题花了不少力气,但是在用搜索引擎对docker理解更近一步,有时候用这种方式学习一项新技术往往事半功倍的。

搜索之旅

作为新手,我只知道docker logs 容器ID用来看容器应用日志,但是这次需要日志文件地址。

先用搜索引擎搜索docker的应用日志地址,给出答案

/var/lib/docker/containers/容器ID/容器ID-json.log 

但是我查了一下,没有这个文件夹,我就想应该是部署的人改了日志地址。我又开始查了怎么修改默认地址,查询到可以修改 /usr/lib/systemd/system/docker.service

在里面的EXECStart的后面增加 --graph 选项指定新目录

果然查到EXECStart后面跟着

--graph=/data/docker

其实这里都不用这么麻烦查这个文件,直接docker info即可

Docker Root Dir: /data/docker

就能查到日志地址。

我进入到这个目录,果然有containers文件夹,然后进去一看,说是容器ID,但是看到的一大串类似乱码的文件夹,我就奇怪是不是进错了,我随便进了一个文件夹,发现里面是有日志,但是日志没东西,有时候运气就是这么差,刚好进入一个没日志的文件夹。我又开始自我怀疑,这样找日志地址对不对,是不是这样子找偏了。我一通找资料,突然觉得可以用docker inspect 容器ID来看看信息,找一个属性LogPath, 打开这个地址,终于找到了日志存储地址。然后我又开始疑惑了,为啥这个日志文件代表的容器ID字符特别长,但是使用docker ps出现的容器ID就只有12位,很奇怪啊,虽然说前12位是一样的。

我又开始新一轮的搜索,找到了一个命令docker ps --no-trunc,这个命令可以查看完整的容器ID,一打果然就对上了,搜索了一圈,终于解决了我的问题。虽然搜索的很幸苦,但是了解之前没有遇到过的知识,问题虽简单,收获却满满的。

额外的知识

我在搜索资料,也会看看相似的资料,同样收获了很多知识,比如修改数据存储地址,有两种方式

修改docker.service

1.vim /usr/lib/systemd/system/docker.service

在文本内容ExecStart=/usr/bin/dockerd 后面添加如下内容: --graph <your path>
如:
ExecStart=/usr/bin/dockerd --graph /home/docker --registry-mirror=https://registry.docker-cn.com

注:--registry-mirror=https://registry.docker-cn.com是修改docker镜像地址

2.systemctl daemon-reload

3.systemctl restart docker

4.重启docker服务

修改daemon.json

第二种修改/etc/docker/daemon.json,这个文件没有可自己新建。

{
  "registry-mirrors": ["http://hub-mirror.c.163.com"],
  "data-root": "/data/docker"
}

有些版本,data-root要改成graph,上面操作之后记得重启docker

systemctl restart docker

daemon.json有很多配置,详情可访官网

当然上面改了文件之后,还是要移动之前的数据文件,不然可能不能启动

# 使用mv命令
$ sudo mv /var/lib/docker /data/docker

# 使用cp命令
$ sudo cp -arv /data/docker /data2/docker