zoukankan      html  css  js  c++  java
  • docker日志

    docker日志

    首先我们先日常运行一个nginx容器,日志会在终端输出访问日志以及错误日志

    [root@localhost ~]# docker run -it -p 80:80 nginx

    现在我们打开网站访问一下nginx

     

     因为我们在启动日志的时候没有使用-d参数,httpd容器以前台方式启动,日志会直接打印到当前的终端窗口。 加-d参数以后后台方式运行容器,我们就看不到输出的日志了

    这种情况下如果要查看容器的日志,有两种方法 attach到该容器

    [root@localhost ~]# docker attach 2ecf757
    192.168.172.1 - - [20/Jun/2020:06:34:03 +0000] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36" "-"
    192.168.172.1 - - [20/Jun/2020:06:34:03 +0000] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36" "-"
    192.168.172.1 - - [20/Jun/2020:06:34:04 +0000] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36" "-"

    用docker logs 命令查看日志

    attach 的方法在实际使用中不太方便,因为:

    1.只能看到attach之后的日志,以前的日志不可见

    2.退出attach状态比较麻烦ctrl+p+q 一不小心很榕溪将容器杀掉,查看容器推荐的方法是 docker logs命令

    [root@localhost ~]# docker logs -f 22fbc207a41a6d
    /docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
    /docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
    /docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
    10-listen-on-ipv6-by-default.sh: Getting the checksum of /etc/nginx/conf.d/default.conf
    10-listen-on-ipv6-by-default.sh: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf
    /docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
    /docker-entrypoint.sh: Configuration complete; ready for start up
    192.168.172.1 - - [20/Jun/2020:06:39:55 +0000] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36" "-"
    192.168.172.1 - - [20/Jun/2020:06:39:55 +0000] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36" "-"
    192.168.172.1 - - [20/Jun/2020:06:39:55 +0000] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36" "-"

    docker logs能够打印出容器启动以来完整的日志,并且 -f参数可以继续打印出新产生的日志效果上和linux  tail -f一样

    docker支持多种日志方案

    将容器日志发送到stdout 和stderr是docker的默认日志行为,实际上 docker提供了多种日志机制帮助用户从运行的容器中提取日志信息,这些机制被称作logging driver

    docker默认的logging driver是json-file

    [root@localhost ~]# docker info |grep 'Logging Driver'
     Logging Driver: json-file

    如果容器在启动时没有特别指明,就会使用这个默认的json-file 会将容器的日志保存在json文件中,docker 负责格式化其内容 并输出到stdout和stderr 我们可有再host 的容器目录中找到这个文件容器路径为

    [root@localhost ~]# docker container inspect 22fbc207a41a |grep 'LogPath'
            "LogPath": "/var/lib/docker/containers/22fbc207a41a6dc8227dd705768a635a729fd778b57da7632f7cf92a6e8c091e/22fbc207a41a6dc8227dd705768a635a729fd778b57da7632f7cf92a6e8c091e-json.log",

     none是disable容器日志功能

    syslog和journald 是linux上的两种日志管理服务

    awslogs     splunk和gcplogs是第三方日志托管服务

    gelf和fluentd是两种开源的日志管理方案

    容器启动时可以通过 --log driver 指定使用的logging driver 如果要设置docker默认的 logging driver 需要修改 docker daemon的启动脚本,指定 --log-driver参数

    [root@localhost ~]# docker info |grep 'Logging Driver'
     Logging Driver: none
  • 相关阅读:
    (Good Bye 2019) Codeforces 1270B Interesting Subarray
    (Good Bye 2019) Codeforces 1270A Card Game
    Codeforces 1283D Christmas Trees(BFS)
    Codeforces 1283C Friends and Gifts
    Codeforces 1283B Candies Division
    1095 Cars on Campus (30)
    1080 Graduate Admission (30)
    1099 Build A Binary Search Tree (30)
    1018 Public Bike Management (30)
    1087 All Roads Lead to Rome (30)
  • 原文地址:https://www.cnblogs.com/cy888888/p/13168933.html
Copyright © 2011-2022 走看看