前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。
?
docker logs :
docker logs -f -t --since="2017-05-31" --tail=10 edu_web_1
edu_web_1 為容器名,也可用容器 id 。
參數說明?
docker logs [OPTIONS] CONTAINEROptions:--details 顯示更多的信息-f, --follow 實時輸出日志,最后一行為當前時間戳的日志--since string 輸出日志開始日期,即只輸出指定日期之后的日志。--tail string 顯示最后多少行日志, 默認是all(如: -tail=10 : 查看最后的 10 行日志。)-t, --timestamps 顯示時間戳
使用方法
docker logs 26b12d17fefc輸出日志內容:nohup: appending output to 'nohup.out'nohup: appending output to 'nohup.out'
docker logs -t 26b12d17fefc輸出日志內容:2017-07-03T12:12:29.909710295Z nohup: appending output to 'nohup.out'2017-07-03T13:58:54.232003809Z nohup: appending output to 'nohup.out'
docker logs --tail 1 26b12d17fefc輸出日志內容:nohup: appending output to 'nohup.out'
docker logs -t --tail 1 26b12d17fefc輸出日志內容:2017-07-03T13:58:54.232003809Z nohup: appending output to 'nohup.out'
docker logs --since 30m 26b12d17fefc輸出日志內容:nohup: appending output to 'nohup.out'docker logs -t --since="2017-07-03T13:58:54.232003809Z" 26b12d17fefc輸出日志內容:2017-07-03T13:58:54.232003809Z nohup: appending output to 'nohup.out'docker logs -t --since="2017-07-03T12:12:29.909710295Z" 26b12d17fefc輸出日志內容:2017-07-03T12:12:29.909710295Z nohup: appending output to 'nohup.out'2017-07-03T13:58:54.232003809Z nohup: appending output to 'nohup.out'
容器日志的輸出形式
-
stdout 標準輸出
-
stderr 標準錯誤
-
以json格式存放在容器對于到日志文件中
docker日志內容類型
-
docker自身運行時Daemon的日志內容
-
docker容器的日志內容
docker logs的實現原理
“Docker Daemon是Docker架構中一個常駐在后臺的系統進程,它在后臺啟動了一個Server,Server負責接受Docker Client發送的請求;接受請求后,Server通過路由與分發調度,找到相應的Handler來執行請求。–《Docker源碼分析》”
?
當我們輸入 docker logs 的時候會轉化為 Docker Client 向 Docker Daemon 發起請求,。
Docker Daemon 在運行容器時會去創建一個協程(goroutine),綁定了整個容器內所有進程的標準輸出文件描述符。
因此容器內應用的所有只要是標準輸出日志,都會被 goroutine 接收。
Docker Daemon 會根據容器 id 和日志類型讀取日志內容,最終會輸出到用戶終端上并且通過 json 格式存放在/var/lib/docker/containers目錄下。
容器日志文件的生命周期
docker logs是跟隨容器而產生的,如果刪除了某個容器,相應的日志文件也會隨著被刪除。
?
?