# docker 配置日志参数
TIP
所有docker镜像的日志文件都会统一储存到/var/log 的目录下面。 由于没有对其做限制。 因此会导致文件过大。 所以要对其日志进行配置。
# 1、 修改daemon.json文件
进入 /etc/docker 目录 修改daemon.json文件添加如下配置
"log-driver": "json-file",
"log-opts": {
"max-size": "1024m",
"max-file": "3",
}
# 2、修改docker运行默认参数
TIP
进行了如上操作后重启 docker 会报错 ,这里会显示“log-driver”已经有了,所以需要删除他
错误提示如下
[root@devops-101 ~]# journalctl -amu docker
-- Logs begin at Thu 2018-08-30 08:28:53 CST, end at Thu 2018-08-30 08:47:53 CST. --
Aug 30 08:29:07 devops-101 systemd[1]: Starting Docker Application Container Engine...
Aug 30 08:29:08 devops-101 dockerd-current[1102]: unable to configure the Docker daemon with file /etc/docker/daemon.json: the following directives are specified both as a flag and in the configuration file: log-dri
Aug 30 08:29:08 devops-101 systemd[1]: docker.service: main process exited, code=exited, status=1/FAILURE
Aug 30 08:29:08 devops-101 systemd[1]: Failed to start Docker Application Container Engine.
这个含义应该是Docker启动的时候传入了命令行参数,同时也指定了配置文件,两个配置发生了冲突。那么就查看一下Docker服务启动文件。
[root@devops-101 ~]# vim /usr/lib/systemd/system/docker.service
[Service]
Type=notify
NotifyAccess=all
EnvironmentFile=-/run/containers/registries.conf
EnvironmentFile=-/etc/sysconfig/docker
EnvironmentFile=-/etc/sysconfig/docker-storage
EnvironmentFile=-/etc/sysconfig/docker-network
Environment=GOTRACEBACK=crash
Environment=DOCKER_HTTP_HOST_COMPAT=1
Environment=PATH=/usr/libexec/docker:/usr/bin:/usr/sbin
ExecStart=/usr/bin/dockerd-current \
--add-runtime docker-runc=/usr/libexec/docker/docker-runc-current \
--default-runtime=docker-runc \
--exec-opt native.cgroupdriver=systemd \
--userland-proxy-path=/usr/libexec/docker/docker-proxy-current \
--init-path=/usr/libexec/docker/docker-init-current \
--seccomp-profile=/etc/docker/seccomp.json \
$OPTIONS \
$DOCKER_STORAGE_OPTIONS \
$DOCKER_NETWORK_OPTIONS \
$ADD_REGISTRY \
$BLOCK_REGISTRY \
$INSECURE_REGISTRY \
$REGISTRIES
可以看到启动的时候会从/etc/sysconfig/docker中获取环境变量。 继续查看这个配置文件。
[root@devops-101 ~]# vim /etc/sysconfig/docker
# /etc/sysconfig/docker
# Modify these options if you want to change the way the docker daemon runs
OPTIONS='--selinux-enabled --log-driver=journald --signature-verification=false'
if [ -z "${DOCKER_CERT_PATH}" ]; then
DOCKER_CERT_PATH=/etc/docker
fi
可以看到参数中默认了--log-driver=journald
,把这一段删掉就可以了。重启之后,就可以在/var/log/containers下看到容器产生的日志文件了。
# 3、 重启docker
systemctl daemon-reload
systemctl restart docker
# 4、 查看配置是否生效
docker inspect CONTAINER_ID
TIP
这里只有新创建的容器才会应用此配置。老的容器不会变化