最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Docker 容器日志分析

 更新時間:2019年03月25日 10:50:15   作者:游戲不存在  
這篇文章主要介紹了Docker 容器日志分析,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

查看容器日志

先使用  docker run -it --rm -d -p 80:80 nginx:1.15.8-alpine 命令啟動一個nginx容器。如果沒有異常,會得到容器ID如  d2408a7931c95a3a83ffeca2fba887763cf925a67890ef3be4d9ff838aa25b00  的長串。再使用  curl -i http://127.0.0.1  訪問服務(wù),確認(rèn)nginx容器正常啟動運(yùn)行。最后使用  docker logs -f d24  查看容器的日志輸出,大概如下:

172.17.0.1 - - [24/Mar/2019:03:51:21 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.29.0" "-"

一般來說使用容器ID的前3位即可

以上就是我們查看容器日志的日常方法了,非常簡單實(shí)用。

容器日志文件存儲

容器的日志會以json文件方式存儲在本地磁盤,可以使用下面方式查看文件路徑  docker inspect d42 | grep Log 可以找到:

"LogPath": "/var/lib/docker/containers/d2408a7931c95a3a83ffeca2fba887763cf925a67890ef3be4d9ff838aa25b00/d2408a7931c95a3a83ffeca2fba887763cf925a67890ef3be4d9ff838aa25b00-json.log",

注意1:mac上沒有/var/lib/docker目錄 ,因?yàn)閐ocker for mac的運(yùn)作方式不一樣,最好使用linux系統(tǒng)練習(xí)。

注意2:  如果LogPath內(nèi)容為空,大概是因?yàn)閐ocker engine版本,升級docker版本能到docker-ce 18.09.3

查看 d2408a7931c95a3a83ffeca2fba887763cf925a67890ef3be4d9ff838aa25b00-json.log 文件,可以看到:

{"log":"172.17.0.1 - - [24/Mar/2019:03:51:21 +0000] \"GET / HTTP/1.1\" 200 612 \"-\" \"curl/7.29.0\" \"-\"\r\n","stream":"stdout","time":"2019-03-24T03:51:21.982476951Z"}

這條信息的log字段內(nèi)容和之前通過  docker logs  命令查看的內(nèi)容一致。

容器日志會跟隨容器生命周期,容器銷毀后日志也會銷毀。使用  docker stop 24  關(guān)停測試的nginx服務(wù)。因?yàn)槿萜鲉邮褂脮r候用了  --rm  參數(shù),關(guān)停后會自動清理刪除,所以會發(fā)現(xiàn) /var/lib/docker/containers/d2408a7931c95a3a83ffeca2fba887763cf925a67890ef3be4d9ff838aa25b00  目錄不存在了,相應(yīng)的日志文件也就刪除了。

容器日志文件滾動策略

docker容器日志默認(rèn)寫入json文件,在線上運(yùn)行時候會有磁盤寫滿的風(fēng)險(xiǎn)??梢哉{(diào)整策略,讓其進(jìn)行滾動。修改/etc/docker/daemon.json(如果沒有就手工創(chuàng)建一個),增加下面內(nèi)容:

{
 "log-opts": {
 "max-size": "1m",
 "max-file": "3"
 }
}

修改完成后重啟docker服務(wù):

systemctl daemon-reload
systemctl restart docker.service

測試一下新的日志策略,使用下面的命令創(chuàng)建一個容器:

docker run -d --rm alpine:3.6 sh -c "while true; do echo hello world; usleep 10; done"

這個alpine容器就是每隔10微秒輸出hello world,保持高頻度輸出,快速生產(chǎn)日志文件。

注:shell中的時間控制

1、sleep : 默認(rèn)為秒。
sleep 1s 表示延遲一秒 
sleep 1m 表示延遲一分鐘 
sleep 1h 表示延遲一小時 
sleep 1d 表示延遲一天    

2、usleep : 默認(rèn)以微秒。 

1s = 1000ms = 1000000us

按照前文中查看日志文件的方法

# pwd
/var/lib/docker/containers/aa3307f5b42770319129e126122be123cfd8e0ebe1c412371ad27e62faa007e3
# ls -lah
total 2.6M
drwx------ 4 root root 4.0K Mar 24 16:22 .
drwx------ 3 root root 4.0K Mar 24 16:21 ..
-rw-r----- 1 root root 647K Mar 24 16:22 aa3307f5b42770319129e126122be123cfd8e0ebe1c412371ad27e62faa007e3-json.log
-rw-r----- 1 root root 977K Mar 24 16:22 aa3307f5b42770319129e126122be123cfd8e0ebe1c412371ad27e62faa007e3-json.log.1
-rw-r----- 1 root root 977K Mar 24 16:21 aa3307f5b42770319129e126122be123cfd8e0ebe1c412371ad27e62faa007e3-json.log.2

很容易發(fā)現(xiàn),日志文件的策略就是維持3個1m大小文件存在,和我們設(shè)置保持一致。

測試完成后,記得使用docker stop aa3 清理測試現(xiàn)場,max-size也可以按照真實(shí)需求調(diào)整大小。

nginx容器日志

了解docker容器的日志策略后,再看看常用的容器是如何處理的。先看看nginx容器。

首先  docker run -it --rm -d -p 80:80 nginx:1.15.8-alpine  創(chuàng)建一個nginx容器,然后  docker exec -it b6d sh  進(jìn)入容器,查看/etc/nginx/nginx.conf可以看到下面內(nèi)容:

error_log /var/log/nginx/error.log warn;
access_log /var/log/nginx/access.log main;

也就是nginx會將錯誤日志和訪問日志寫入對應(yīng)的日志文件。繼續(xù)查看/var/log/nginx目錄:

/var/log/nginx # ls -lah
total 0
drwxr-xr-x 2 root  root   39 Mar 4 07:54 .
drwxr-xr-x 3 root  root   18 Mar 4 07:54 ..
lrwxrwxrwx 1 root  root   11 Jan 31 23:32 access.log -> /dev/stdout
lrwxrwxrwx 1 root  root   11 Jan 31 23:32 error.log -> /dev/stderr

這就發(fā)現(xiàn)奧秘了,access.log文件會通過軟鏈接重定向到標(biāo)準(zhǔn)輸出,而錯誤日志error.log則會重定向標(biāo)準(zhǔn)錯誤。這樣使用docker log命令就可以看到nginx的訪問日志了。

為了進(jìn)一步驗(yàn)證,查看nginx dockerfile文件,其中有:

# forward request and error logs to docker log collector
 && ln -sf /dev/stdout /var/log/nginx/access.log \
 && ln -sf /dev/stderr /var/log/nginx/error.log

可見nginx鏡像創(chuàng)建時候就定義好了日志文件的輸出。

同樣使用docker stop 524清理現(xiàn)場,以后就不再介紹清理這一步驟了。

mysql容器日志

啟動一個mysql容器

docker run --rm -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7

不難看到mysql容器日志輸出, 截取其中片段如下:

Initializing database
2019-03-24T08:48:19.102726Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2019-03-24T08:48:20.241459Z 0 [Warning] InnoDB: New log files created, LSN=45790
2019-03-24T08:48:20.414933Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2019-03-24T08:48:20.509897Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: 935a6ee7-4e11-11e9-b135-0242ac110002.
2019-03-24T08:48:20.519148Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2019-03-24T08:48:20.519843Z 1 [Warning] root@localhost is created with an empty password ! Please consider switching off the --initialize-insecure option.
2019-03-24T08:48:24.066683Z 1 [Warning] 'user' entry 'root@localhost' ignored in --skip-name-resolve mode.
2019-03-24T08:48:24.066730Z 1 [Warning] 'user' entry 'mysql.session@localhost' ignored in --skip-name-resolve mode.
2019-03-24T08:48:24.066740Z 1 [Warning] 'user' entry 'mysql.sys@localhost' ignored in --skip-name-resolve mode.
2019-03-24T08:48:24.066756Z 1 [Warning] 'db' entry 'performance_schema mysql.session@localhost' ignored in --skip-name-resolve mode.
2019-03-24T08:48:24.066761Z 1 [Warning] 'db' entry 'sys mysql.sys@localhost' ignored in --skip-name-resolve mode.
2019-03-24T08:48:24.066772Z 1 [Warning] 'proxies_priv' entry '@ root@localhost' ignored in --skip-name-resolve mode.
2019-03-24T08:48:24.066814Z 1 [Warning] 'tables_priv' entry 'user mysql.session@localhost' ignored in --skip-name-resolve mode.
2019-03-24T08:48:24.066822Z 1 [Warning] 'tables_priv' entry 'sys_config mysql.sys@localhost' ignored in --skip-name-resolve mode.
Database initialized
Initializing certificates
Generating a RSA private key

查看mysql Dockerfile  文件,可以知道m(xù)ysql鏡像啟動入口在entrypoint.sh,從腳本中發(fā)現(xiàn):

echo 'Initializing database'
"$@" --initialize-insecure
echo 'Database initialized'

這樣就是mysql容器啟動時候的輸出對應(yīng)起來了。entrypoint.sh比較復(fù)雜,主要功能就是啟動mysqld,并將日志輸出,因?yàn)椴皇潜疚闹攸c(diǎn),就不詳細(xì)介紹了。

總結(jié)

  1. docker容器默認(rèn)輸出到本地json文件,并且可以對其進(jìn)行大小和數(shù)量控制。
  2. 應(yīng)用容器日志可以先生成日志文件,然后將應(yīng)用日志文件軟連接到標(biāo)準(zhǔn)輸出,比如nginx;也可以在啟動時候直接將日志打印到標(biāo)準(zhǔn)輸出,比如mysql。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Docker安裝logstash的詳細(xì)過程

    Docker安裝logstash的詳細(xì)過程

    這篇文章主要介紹了Docker安裝logstash的詳細(xì)過程,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-09-09
  • Docker創(chuàng)建MySQL容器的方法

    Docker創(chuàng)建MySQL容器的方法

    本篇文章主要介紹了Docker創(chuàng)建MySQL容器的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-01-01
  • Docker 容器監(jiān)控原理及 cAdvisor的安裝與使用說明

    Docker 容器監(jiān)控原理及 cAdvisor的安裝與使用說明

    這篇文章主要介紹了Docker 容器監(jiān)控原理及 cAdvisor的安裝與使用說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • 最詳細(xì)的docker中安裝并配置redis(圖文詳解)

    最詳細(xì)的docker中安裝并配置redis(圖文詳解)

    這篇文章主要介紹了最詳細(xì)的docker中安裝并配置redis(圖文詳解),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • Docker基礎(chǔ)教程之Dockerfile語法詳解

    Docker基礎(chǔ)教程之Dockerfile語法詳解

    這篇文章主要給大家介紹了關(guān)于Docker基礎(chǔ)教程之Dockerfile語法的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Docker具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • 解決docker安裝jenkins容器內(nèi)無法訪問外網(wǎng)

    解決docker安裝jenkins容器內(nèi)無法訪問外網(wǎng)

    這篇文章為大家主要介紹了docker安裝jenkins容器內(nèi)無法訪問外網(wǎng)的問題解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-11-11
  • 一文詳解如何配置docker通過代理服務(wù)器拉取鏡像

    一文詳解如何配置docker通過代理服務(wù)器拉取鏡像

    這篇文章主要給大家介紹了關(guān)于如何配置docker通過代理服務(wù)器拉取鏡像的相關(guān)資料,如果在拉取Docker鏡像時遇到速度較慢的問題,可以嘗試以下幾種方法解決,需要的朋友可以參考下
    2024-07-07
  • Docker、Podman 和 Containerd 三者區(qū)別解析

    Docker、Podman 和 Containerd 三者區(qū)別解析

    Docker、Podman 和 Containerd 是三種流行的容器工具,它們都用于容器的創(chuàng)建、管理和運(yùn)行,但它們在設(shè)計(jì)理念、功能和使用場景上有一些差異,這篇文章主要介紹了Docker、Podman 和 Containerd 三者區(qū)別,需要的朋友可以參考下
    2025-02-02
  • docker?images的常用方式

    docker?images的常用方式

    這篇文章主要介紹了docker?images的常用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • 利用?trap?在?docker?容器優(yōu)雅關(guān)閉前執(zhí)行環(huán)境清理的方案

    利用?trap?在?docker?容器優(yōu)雅關(guān)閉前執(zhí)行環(huán)境清理的方案

    這篇文章主要介紹了利用?trap?在?docker?容器優(yōu)雅關(guān)閉前執(zhí)行環(huán)境清理的問題,需要在容器的啟動腳本中,加入 trap 指令,來完成容器在退出前需要做的所有事情,本文通過腳本示例給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2021-12-12

最新評論

漠河县| 永兴县| 屏边| 德惠市| 襄垣县| 板桥市| 会同县| 铜鼓县| 内乡县| 报价| 郴州市| 溧阳市| 五华县| 和林格尔县| 宁陕县| 集贤县| 绥宁县| 墨竹工卡县| 桂林市| 东辽县| 重庆市| 德化县| 巴彦淖尔市| 苍梧县| 鄄城县| 衡南县| 仪陇县| 平乐县| 新乡市| 古丈县| 崇礼县| 长宁县| 武隆县| 天镇县| 普格县| 新晃| 扎囊县| 娱乐| 东兴市| 承德县| 五华县|