You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将Docker作为systemd服务运行时配置日志输出至journald

解决Docker Compose服务日志无法通过journalctl查看的问题

问题原因

通过systemd运行docker compose up --build时,Docker Compose本身的启动、构建日志会被systemd捕获,但容器日志默认使用Docker的json-file驱动,仅能通过docker logs查看,无法进入journald。

解决方案

方案1:为单个Docker Compose服务配置journald日志驱动

编辑你的docker-compose.yml,在需要日志接入journald的服务节点下添加logging配置:

services:
  你的服务名称:
    # 原有服务配置...
    logging:
      driver: "journald"

配置完成后,容器日志会直接发送到journald,可通过以下命令查看:

journalctl CONTAINER_NAME=<容器名称> -f

方案2:全局配置Docker默认使用journald日志驱动

如果希望所有新创建的容器都默认将日志发送到journald,编辑Docker守护进程配置文件/etc/docker/daemon.json(文件不存在则直接创建):

{
  "log-driver": "journald"
}

保存文件后重启Docker服务:

systemctl restart docker

最后重启你的systemd服务:

systemctl restart anglo1.service

优化systemd服务配置

当前的systemd配置存在参数不合理的地方,建议调整如下,确保服务状态与进程状态一致:

[Service]
Type=simple
RemainAfterExit=no  # 移除原有RemainAfterExit=yes,compose up为前台进程,进程退出服务应同步停止
Restart=always
User=root
WorkingDirectory=/mnt/DockerJobs/Anglo1
LimitNOFILE=5000000
LogRateLimitIntervalSec=0
Environment="PATH=/bin:/usr/bin:/usr/local/bin"
ExecStart=/usr/bin/docker compose up --build
ExecStop=/usr/bin/docker compose down  # 添加停止命令,确保容器能被正确关停
TimeoutStopSec=120

修改后重新加载systemd配置并重启服务:

systemctl daemon-reload
systemctl restart anglo1.service

验证配置

查看服务的启动、构建日志:

journalctl -u anglo1.service -f

查看容器运行日志:

journalctl CONTAINER_NAME=<容器名称> -f

内容的提问来源于stack exchange,提问作者XXX

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 04:01:04