代码之家  ›  专栏  ›  技术社区  ›  Mittenchops

查看临时docker容器的stdout和日志

  •  0
  • Mittenchops  · 技术社区  · 6 年前

    我知道有很多关于如何阅读docker日志的问题,答案是:

    $ docker logs containername
    

    docker run --name myname --rm  python-my-script:3.7.4 - --myflags "myargs"
    

    但当我这么做的时候:

    docker logs myname
    Error: No such container: myname
    

    Error response from daemon: can not get logs from container which is dead or marked for removal
    

    如何查看不再运行的容器的日志?我不想安装像syslog这样的重量级软件。

    0 回复  |  直到 6 年前
        1
  •  3
  •   atline    6 年前

    Docker的默认日志驱动程序是 json-file docker logs --rm

    对于您的情况,您需要更改日志驱动程序,以确保即使在删除容器之后仍然可以看到日志。

    有很多日志驱动程序可以满足您的需求,请参阅 this . E、 g fluentd、splunk等。

    这里,给出一个最简单的方法来保留日志,使用 journald ,供您参考的最小示例:

    1. $ docker run --log-driver=journald --rm --name=trial alpine echo "hello world"
      
    2. 在容器完成打印“hello world”之后,容器将按其指定的方式被删除 --林吉特 ,检查是否

      $ docker logs trial
      Error: No such container: trial
      
    3. 如果可以获取日志,请使用journald:

      $ journalctl CONTAINER_NAME=trial --all
      -- Logs begin at Mon 2018-12-17 21:35:55 CST, end at Mon 2019-08-05 14:21:19 CST. --
      Aug 05 14:18:26 shubuntu1 a475febe91c1[1975]: hello world
      

    您可以看到,即使容器被移除,也可以使用journalctl获取日志内容“helloworld”。

    顺便说一句,如果您不想指定 --log-driver daemon.json ,参见 this :

    {
      "log-driver": "journald"
    }
    

    同时,你仍然可以使用 docker日志 如果容器未被删除,则获取日志。

    推荐文章