[Docker] Log

Docker์—์„œ ๋กœ๊ทธ๋ฅผ ์กฐํšŒํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ, ์ €์žฅ์„ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ• ๋“ฑ์„ ์ •๋ฆฌํ•ด๋ณธ๋‹ค.




๋„์ปค ๋กœ๊ทธ ์กฐํšŒ

๊ธฐ๋ณธ์ ์œผ๋กœ ๋กœ๊ทธ๋Š” logs ๋ช…๋ น์„ ํ†ตํ•ด์„œ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋‹ค.

docker logs ์ปจํ…Œ์ด๋„ˆID

๋์—์„œ 10์ค„๋งŒ ๋ณด๊ณ  ์‹ถ๋‹ค๋ฉด tail ํ”Œ๋ž˜๊ทธ๋ฅผ ์ฃผ๋ฉด ๋˜๊ณ 

์‹ค์‹œ๊ฐ„์œผ๋กœ ์Œ“์ด๋Š” ๋กœ๊ทธ๋ฅผ tailingํ•˜๋ ค๋ฉด -f ํ”Œ๋ž˜๊ทธ๋ฅผ ์ฃผ๋ฉด ๋œ๋‹ค.





๋กœ๊ทธ ํŒŒ์ผ์˜ ์œ„์น˜

๋กœ๊ทธ ํŒŒ์ผ์˜ ์œ„์น˜๋Š” ์„ค์น˜ ํ™˜๊ฒฝ์— ๋”ฐ๋ผ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ๋‹ค. ์ •ํ™•ํ•œ ์œ„์น˜๋ฅผ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ•์€, ์ปจํ…Œ์ด๋„ˆ ์ •๋ณด๋ฅผ ์ง์ ‘ ๊นŒ๋ณด๋Š” ๊ฒƒ์ด๋‹ค.
๋‹ค์Œ ๋ช…๋ น์–ด๋กœ ๊ฒฝ๋กœ๋ฅผ ์ฐพ๊ณ 

sudo docker inspect ์ปจํ…Œ์ด๋„ˆID --format "{{.LogPath}}"

๊ทธ ๊ฒฝ๋กœ๋ฅผ ๊นŒ๋ณด๋ฉด ๋กœ๊ทธํŒŒ์ผ๊ณผ ์žก๋‹คํ•œ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๊ณ„์—ด์˜ ํŒŒ์ผ๋“ค์ด ํ•จ๊ป˜ ๋“ค์–ด์žˆ๊ณ 


๋กœ๊ทธ๋„ ์ด๋Ÿฐ ์‹์œผ๋กœ ์ €์žฅ์ด ๋˜์–ด์žˆ์„ ๊ฒƒ์ด๋‹ค.




Log Driver ๊ด€๋ฆฌ

docker์˜ ๊ธฐ๋ณธ ๋กœ๊ทธ์‹œ์Šคํ…œ์—๋Š” ๊ฝค ํฐ ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š”๋ฐ, ์•„๋ฌด๋Ÿฐ ๊ด€๋ฆฌ๋ฅผ ํ•ด์ฃผ์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

retention์ด๋‚˜ rotation ๊ฐ™์€ ๊ธฐ๋ณธ์ ์ธ ์„ค์ •๋„ ์—†๊ธฐ ๋•Œ๋ฌธ์—, ์ปจํ…Œ์ด๋„ˆ์—์„œ ์Œ“๋Š” ๋กœ๊ทธ๋Š” ์–ธ์ œ๋‚˜ append-only๋กœ ์Œ“์ด๊ธฐ๋งŒ ํ•œ๋‹ค. ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ข…๋ฃŒ๋œ๋‹ค๊ณ  ํ•ด์„œ ๋กœ๊ทธ๋ฅผ ์ •๋ฆฌํ•˜์ง€๋„ ์•Š๋Š”๋‹ค.

๊ทธ๋ž˜์„œ ์ง์ ‘ Docker๋ฅผ ์ œ์–ดํ•ด์„œ ์‹œ์Šคํ…œ์„ ๊ตด๋ฆด ๊ฒฝ์šฐ์—๋Š” ๋กœ๊ทธ driver ์„ค์ •์„ ๊ฑด๋“œ๋ ค์ค„ ํ•„์š”๊ฐ€ ์–ด๋А ์ •๋„ ์žˆ๋‹ค.


์ผ๋‹จ, docker๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ json-file์ด๋ผ๋Š” ๋กœ๊ทธ ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์“ด๋‹ค.
์ด๊ฑด rotation ๊ฐ™์€ ๊ธฐ๋Šฅ๋„ ์—†๊ณ , ๋ฆฌํ…์…˜์œผ๋กœ ์ž๋™ ์ •๋ฆฌํ•˜๊ฑฐ๋‚˜ ํ•˜๋Š” ๊ธฐ๋Šฅ๋„ ์—†๋Š” ๊ตฌ๋ฆฐ ๋“œ๋ผ์ด๋ฒ„๋‹ค.
์ด๊ฒŒ ๊ธฐ๋ณธ๊ฐ’์ธ ์ด์œ ๋Š” ๋”ฑํžˆ ์ด๊ฒŒ ์ข‹์•„์„œ๊ฐ€ ์•„๋‹ˆ๋ผ, ๋‹จ์ˆœํžˆ ํ•˜์œ„ํ˜ธํ™˜์„ฑ ๊ฐ™์€ ๊ฒƒ ๋•Œ๋ฌธ์ด๋‹ค.

๋””์Šคํฌ ๊ด€๋ฆฌ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด local ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์“ฐ๋Š”๊ฒŒ ๊ถŒ์žฅ๋œ๋‹ค.
์ „์—ญ ์„ค์ •์„ ๋ฐ”๊พธ๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.
๋จผ์ € daemon.json ํŒŒ์ผ์˜ ์œ„์น˜๋ฅผ ์ฐพ๋Š”๋‹ค.

ps aux | grep dockerd

๊ทธ๋Ÿผ ์ € config-file์„ ์—ด์–ด์„œ


{
  "log-driver": "local",
  "log-opts": {
    "max-size": "100m"
  }
}

๊ฐ’์„ ์ ๋‹นํžˆ ์ด๋Ÿฐ ์‹์œผ๋กœ ์ˆ˜์ •ํ•ด์ค€๋‹ค.
์ด๋Ÿฌ๋ฉด ์ปจํ…Œ์ด๋„ˆ๋งˆ๋‹ค ์ตœ๋Œ€ 100mb๋งŒํผ์˜ ๋กœ๊ทธ๋ฅผ ๋ณด๊ด€ํ•˜๊ณ , ๊ทธ ์ด์ƒ์€ ๋ฒ„๋ฆฌ๊ฒ ๋‹ค๋Š” ๋œป์ด ๋œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  docker๋ฅผ ์ ๋‹นํžˆ ์žฌ์‹œ์ž‘ํ•˜๋ฉด

sudo systemctl restart snap.docker.dockerd

์ด์ œ๋ถ€ํ„ฐ๋Š” ๊ธฐ๋ณธ ๋“œ๋ผ์ด๋ฒ„๊ฐ€ local์ด ๋˜๊ณ , ๋กœ์ปฌ ๋“œ๋ผ์ด๋ธŒ์— ์˜ํ•ด์„œ ๋กœ๊ทธ ์ •๋ฆฌ๊ฐ€ ์–ด๋А ์ •๋„ ๋  ๊ฒƒ์ด๋‹ค.

๊ธ€๋กœ๋ฒŒ ์„ค์ •์„ ๊ฑด๋“œ๋ฆฌ๊ณ  ์‹ถ์ง€ ์•Š๋‹ค๋ฉด ๊ทธ๋ƒฅ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ• ๋•Œ ์ง์ ‘ ์˜ต์…˜์„ ๋„ฃ๋Š” ๋ฐฉ๋ฒ•๋„ ์žˆ๋‹ค.

sudo docker run -d --log-driver local --log-opt max-size=50m ubuntu:latest echo hello,world!

์ด๋Ÿฌ๋ฉด ๊ทธ๋ƒฅ ๋กœ์ปฌ ๋“œ๋ผ์ด๋ฒ„์—, 50mb ํฌ๊ธฐ ์ œํ•œ์„ ๊ฐ€์ง„ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋งŒ๋“ค์–ด์ง„๋‹ค.

๊ทธ๋ฆฌ๊ณ  docker compose๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ๋„ logging ํ•„๋“œ๋ฅผ ํ†ตํ•ด log driver ์„ค์ •์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.

์ด๋Ÿฐ ์‹์œผ๋กœ ๋ง์ด๋‹ค.



์ฐธ์กฐ
https://docs.docker.com/engine/logging/configure/
https://docs.docker.com/engine/logging/drivers/local/
https://stackoverflow.com/questions/43486505/docker-compose-json-logging-driver-labels-env