【问题标题】:Saving docker container logs with container names instead of container IDs使用容器名称而不是容器 ID 保存 docker 容器日志
【发布时间】:2021-01-08 10:01:17
【问题描述】:

使用默认的 json 文件日志记录驱动程序,有没有办法使用容器名称而不是容器 ID 来记录轮换 docker 容器日志?

日志文件名中的容器 ID 看起来不太可读,这是我想到用容器名称保存日志的时候?

【问题讨论】:

    标签: docker logrotate


    【解决方案1】:

    可以使用日志选项配置引擎以在日志中包含标签:

    # cat /etc/docker/daemon.json 
    {
      "log-driver": "json-file",
      "log-opts": {
        "max-size": "10m",
        "max-file": "3",
        "labels": "com.docker.stack.namespace,com.docker.swarm.service.name,environment"
      }
    }
    
    # docker run --label environment=dev busybox echo hello logs
    hello logs
    root@vm-11:/etc/docker# docker ps -l
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                     PORTS               NAMES
    9615c898c2d2        busybox             "echo hello logs"   8 seconds ago       Exited (0) 7 seconds ago                       eloquent_germain
    
    # docker logs --details 961
    environment=dev hello logs
    
    # more /var/lib/docker/containers/9615c898c2d2aa7439581e08c2e685f154e4bf2bb9fd5ded0c384da3242c6c9e/9615c898c2d2aa7439581e08c2e685f154e4bf2bb9fd5ded0c384da3242c6c9e-json.log
    {"log":"hello logs\n","stream":"stdout","attrs":{"environment":"dev"},"time":"2020-09-22T11:12:41.279155826Z"}
    

    对 daemon.json 进行更改后需要重新加载 docker 引擎,并且更改仅适用于新创建的容器。对于 systemd,使用 systemctl reload docker 完成重新加载。

    要专门传递不是标签的容器名称,您可以传递“标签”设置:

    # docker run --name test-log-opts --log-opt tag="{{.Name}}/{{.ID}}" busybox echo hello log opts
    hello log opts
    
    # docker ps -l
    CONTAINER ID        IMAGE               COMMAND                 CREATED             STATUS                     PORTS               NAMES
    c201d0a2504a        busybox             "echo hello log opts"   6 seconds ago       Exited (0) 5 seconds ago                       test-log-opts
    
    # docker logs --details c20
    tag=test-log-opts%2Fc201d0a2504a hello log opts
    
    # more /var/lib/docker/containers/c201d0a2504addedb2b6785850a83e8931052d0d9778438e9dcc27391f45fec2/c201d0a2504addedb2b6785850a83e8931052d0d9778438e9dcc27391f45fec2-json.log
    {"log":"hello log opts\n","stream":"stdout","attrs":{"tag":"test-log-opts/c201d0a2504a"},"time":"2020-09-22T11:15:26.998956544Z"}
    

    更多详情:

    【讨论】:

    • 感谢@bmitch 的详细解释。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    • 2022-07-16
    • 1970-01-01
    • 2014-04-26
    • 1970-01-01
    • 2021-12-23
    • 1970-01-01
    相关资源
    最近更新 更多