Compose: ๊ธฐ๋Šฅ : ๋กœ๊ทธ ๊ธฐ๋ก ์ง€์šฐ๊ธฐ ๊ธฐ๋Šฅ

์— ๋งŒ๋“  2015๋…„ 03์›” 09์ผ  ยท  145์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: docker/compose

์›๋ž˜ Fig์„ ์‚ฌ์šฉํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์œ ์šฉ ํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•œ ๊ธฐ๋Šฅ์ด์—ˆ์œผ๋ฉฐ ์ด์ œ Compose๋Š” Composed-managed ์ปจํ…Œ์ด๋„ˆ์— ๋Œ€ํ•œ ๋กœ๊ทธ ๊ธฐ๋ก์„ ์ง€์šฐ๋Š” ๊ธฐ๋Šฅ์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜ค๋ž˜ ์‹คํ–‰๋˜๊ฑฐ๋‚˜ "์ˆ˜๋‹ค์Šค๋Ÿฌ์šด"์ปจํ…Œ์ด๋„ˆ๋Š” ์›ํ•˜์ง€ ์•Š์„ ์ˆ˜์žˆ๋Š” ๋งŽ์€ ๋กœ๊ทธ ๋…ธ์ด์ฆˆ๋กœ ๋๋‚  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ช…๋ น์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ๊ฒƒ์œผ๋กœ ๊ธฐ๋Œ€ํ•ฉ๋‹ˆ๋‹ค.
$ docker-compose logs --clear [service]

arelogs kinenhancement

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

docker logs -c (clear) <container> ๊ฐ€ ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

+1

๋ชจ๋“  145 ๋Œ“๊ธ€

๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ๋„์ปค ๋ฐ๋ชฌ์ด ์ง€์›ํ•˜๋Š” ๊ธฐ๋Šฅ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. API ๋ฌธ์„œ๋ฅผ ๋ณด๋ฉด ์œ ์ผํ•œ ์˜ต์…˜์€ ๋ฐ˜ํ™˜ ๋œ ๋กœ๊ทธ๋ฅผ ์ปจํ…Œ์ด๋„ˆ ๋‹น ์ œํ•œ๋œ ์ˆ˜์˜ ์ค„๋กœ ์ž๋ฅด๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

https://docs.docker.com/reference/api/docker_remote_api_v1.17/#get -container-logs

: +1 :์ด ๋ฌธ์ œ์— ๋Œ€ํ•ด. ์ €๋Š” ์‹ค์ œ๋กœ compose๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Golang, Mongodb ๋ฐ nginx์—์„œ ์›น ์‚ฌ์ดํŠธ๋ฅผ ๊ฐœ๋ฐœํ•ฉ๋‹ˆ๋‹ค. ์‹œ์ž‘ ํ›„ 5 ์ผ์ด ์ง€๋‚˜๋ฉด ๊ฑฑ์ •๋˜๋Š” ๊ธด ๋กœ๊ทธ๊ฐ€ ์ƒ๊น๋‹ˆ๋‹ค. ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•  ๋•Œ๋งˆ๋‹ค ๋กœ๊ทธ์— ์—ฌ๋Ÿฌ ์ค„์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
@dnephin ๋‹น์‹ ์ด ํ•ด๊ฒฐ์ฑ…์„ ์ œ๊ณตํ•˜๋Š”์ง€ (๋‚ด๊ฐ€ ์ดํ•ดํ•˜์ง€ ๋ชปํ•˜๋Š” :)) ๋˜๋Š” api๋กœ ๊ฐ€๋Šฅํ•œ์ง€ ํ™•์ธ์„ ์ œ์•ˆํ•˜๋Š”์ง€ ์ดํ•ดํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. ๋‚ด ํ•˜์ฐฎ์€ ์˜์–ด ์‹ค๋ ฅ์— ์ฃ„์†กํ•˜๋‹ค๋Š” ๋ง์”€์„ ๋“œ๋ฆฌ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

Docker 1.6์€ ๋กœ๊น… ๋“œ๋ผ์ด๋ฒ„์— ๋Œ€ํ•œ ์ง€์›์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. https://github.com/docker/docker/pull/10568 (ํ˜„์žฌ, JSON, syslog ๋ฐ "none"์ฐธ์กฐ) ์ž‘์—…์ด ๊ธฐ๋ณธ ๋กœ๊ทธ ํšŒ์ „์— ๋Œ€ํ•ด ์ง„ํ–‰ ์ค‘์ž…๋‹ˆ๋‹ค. https://github.com/docker/docker/pull/11485

๋‹คํ–‰์ž…๋‹ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค :)

Docker 1.6์— ๋Œ€ํ•œ ๋ฐฐ๊ฒฝ๊ณผ ์—…๋ฐ์ดํŠธ์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๊ธฐ๋Œ€ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค!

docker logs -c (clear) <container> ๊ฐ€ ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

+1

+1 ์ •๋ง ์ค‘์š”

์ด๋Ÿฐ ์†Œ, ๋‚˜๋Š” ๋๊นŒ์ง€ ๋ช‡ ๋ถ„ ๋™์•ˆ ํ†ต๋‚˜๋ฌด๋ฅผ ๋ณด์•˜์Šต๋‹ˆ๋‹ค. ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ง€์†์ ์œผ๋กœ ์žฌ ๊ตฌ์ถ• ํ•  ํ•„์š”๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ •๋ง ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

+1

+1

+1

: +1 :

+1

+2

+1

๊ธฐ๋ก์„ ์œ„ํ•ด Docker 1.8 ๋ฐ docker-compose 1.4์—๋Š” https://docs.docker.com/compose/yml/#log -driver ๋ฐ log-opt max-size๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋กœ๊ทธ ํฌ๊ธฐ๋ฅผ ์ œํ•œํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์ด๋ฏธ ์žˆ์Šต๋‹ˆ๋‹ค.

  log_driver: "json-file"
  log_opt:
    max-size: "100k"
    max-file: "20"

@dmage ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค, ์ •ํ™•ํžˆ ํ•„์š”ํ•œ ๊ฒƒ.

+1000

+1์€ ์ด๊ฒƒ์„ ์ข‹์•„ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

+1

@dmage ์†”๋ฃจ์…˜์€ ์šฐ๋ฆฌ์—๊ฒŒ ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์„ +1ํ•˜๋Š” ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค, ๊ทธ๊ฐ€ ์ œ๊ณต ํ•œ ์†”๋ฃจ์…˜์— ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

@Rodeoclash- ์ด๊ฒƒ์— ๋Œ€ํ•œ ํ•œ ๊ฐ€์ง€ ์‚ฌ์šฉ ์‚ฌ๋ก€๋Š” ์ƒˆ๋กœ์šด ์‹คํ–‰, ์ฆ‰ CI ํ…Œ์ŠคํŠธ ์‹คํ–‰์„ ์œ„ํ•ด ์ฃผ์–ด์ง„ ์ปจํ…Œ์ด๋„ˆ ์„ธํŠธ๋ฅผ ์žฌ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด์ „ ๋กœ๊ทธ๋Š” ์ƒˆ ์‹คํ–‰๊ณผ ๊ด€๋ จ์ด ์—†์œผ๋ฏ€๋กœ ๋‹ค์Œ ๋ช…๋ น ์ด์ „์— clear ์„ ์‚ฌ์šฉํ•˜๋ฉด ํ˜ผ๋ž€์„ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

+1

+1, @rosskevin ๊ณผ ๋™์ผํ•œ ํ•„์š”

์š”์•ฝํ•˜์ž๋ฉด :

  • ์ž‘์„ฑ ํŒŒ์ผ์—์„œ์ด๋ฅผ ์ˆ˜ํ–‰ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค (https://github.com/docker/compose/issues/1083#issuecomment-141936600 ์ฐธ์กฐ).
  • # 265๋Š” logs ๋ช…๋ น์˜ ์ถœ๋ ฅ์„ ์ œํ•œ ํ•  ์ˆ˜ ์žˆ์Œ์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค.
  • # 1756์€ ์žฌ์‚ฌ์šฉ ๋œ ์ปจํ…Œ์ด๋„ˆ ์ผ€์ด์Šค๋ฅผ ๋‹ค๋ฃน๋‹ˆ๋‹ค.

์ด๋ฏธ ๋‹ค๋ฅธ ๋ฌธ์ œ์—์„œ ์ง€์›๋˜๊ฑฐ๋‚˜ ์ถ”์ ๋˜์—ˆ์œผ๋ฏ€๋กœ์ด ๋ฌธ์ œ๋ฅผ ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค.

์™œ ์ด๊ฒƒ์ด ๋‹ซํ˜”๋Š”์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋กœ๊ทธ ๊ธฐ๋ก์„ ์–ด๋–ป๊ฒŒ ์ง€์šฐ๋‚˜์š”?

๋‚˜๋Š” ์ถ”๊ฐ€ํ•œ๋‹ค :

  log_opt:
    max-size: 50k

๋กœ๊ทธ ๊ธธ์ด๋ฅผ ์ œํ•œํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋“ค์€ ์ •๋ง๋กœ ์ด๊ฒƒ์„ ์ถ”๊ฐ€ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ํ•„์ˆ˜์ ์ž…๋‹ˆ๋‹ค. ๋กœ๊ทธ๋ฅผ ์ œํ•œํ•˜๋Š” ๊ฒƒ์€ ์ข‹์ง€๋งŒ ๋กœ๊ทธ๋ฅผ ์ง€์šฐ๋Š” ๊ฐ„๋‹จํ•œ ๋ช…๋ น์ด ์žˆ์–ด์•ผํ•ฉ๋‹ˆ๋‹ค.

docker logs -c <container>

๋ฌด์—‡์„ ์ œ๊ณตํ•ฉ๋‹ˆ๊นŒ?

๋กœ๊ทธ ํฌ๊ธฐ๋ฅผ ์ œํ•œํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ๊ณ  ์žˆ์ง€๋งŒ ๋กœ๊ทธ๋ฅผ _ ์ง€์šฐ๋ ค๋ฉด _ ์–ด๋–ป๊ฒŒํ•ด์•ผํ•ฉ๋‹ˆ๊นŒ?

๋กœ๊ทธ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋„์ปค ์—”์ง„์ด ๋กœ๊ทธ ์ง€์šฐ๊ธฐ๋ฅผ ์ง€์›ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž ์ง€์ • ๋กœ๊ทธ ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ทธ๋ ‡๊ฒŒ ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์ž‘์„ฑํ•˜๋ ค๋ฉด ์™ธ๋ถ€์— ์žˆ์–ด์•ผํ•ฉ๋‹ˆ๋‹ค.

๋กœ๊ทธ๋ฅผ ํ”Œ๋Ÿฌ์‹œ ํ•  ์ˆ˜์žˆ๋Š” +1 ...

+1

+1

+1

+1

๋กœ๊ทธ ์ง€์šฐ๊ธฐ ๋ช…๋ น์˜ ๊ฒฝ์šฐ +1.

๋กœ๊ทธ ์ง€์šฐ๊ธฐ ๋ช…๋ น์˜ ๊ฒฝ์šฐ +1

+1

+1

+1

: +1 :

+1

+1

ํ•ด๋‹น ๋ฌธ์„œ๋ฅผ ์‚ดํŽด๋ณด์‹ญ์‹œ์˜ค.
https://docs.docker.com/engine/admin/logging/overview/

docker-logs-clean.sh

#!/bin/bash

rm $(docker inspect $1 | grep -G '"LogPath": "*"' | sed -e 's/.*"LogPath": "//g' | sed -e 's/",//g');

๊ธฐ๋„:

sudo ./docker-logs-clean.sh <container-name>;

@sgarbesi ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!
+1

๋กœ๊ทธ ์ง€์šฐ๊ธฐ ๋ช…๋ น์˜ ๊ฒฝ์šฐ +1

์ฐฌ์„ฑ ํ์‡„?

https://github.com/docker/compose/issues/1083#issuecomment -149357280์—์„œ ๋‚ด ์˜๊ฒฌ์„ ๋ฐ˜๋ณตํ•˜๋ ค๋ฉด :

์š”์•ฝํ•˜์ž๋ฉด :

  • ์ž‘์„ฑ ํŒŒ์ผ์—์„œ์ด๋ฅผ ์ˆ˜ํ–‰ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค (https://github.com/docker/compose/issues/1083#issuecomment-141936600 ์ฐธ์กฐ).
  • # 265๋Š” logs ๋ช…๋ น์˜ ์ถœ๋ ฅ์„ ์ œํ•œ ํ•  ์ˆ˜ ์žˆ์Œ์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค.
  • # 1756์€ ์žฌ์‚ฌ์šฉ ๋œ ์ปจํ…Œ์ด๋„ˆ ์ผ€์ด์Šค๋ฅผ ๋‹ค๋ฃน๋‹ˆ๋‹ค.

์ฐพ๊ณ ์žˆ๋Š” ๊ฒƒ์ด docker logs --clear ์™€ ๊ฐ™์€ ๋ช…๋ น ์ธ ๊ฒฝ์šฐ ๋„์ปค ์—”์ง„์—์„œ ์ง€์›ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ๋„์ปค / ๋„์ปค์—์„œ ์š”์ฒญํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์œ„์˜ ์˜ต์…˜์€ ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ์ด๋ฏธ ์ถฉ๋ถ„ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ๋žŒ๋“ค์ด ์›ํ•˜๋Š” ๊ฒƒ์€ ์‹ค์ œ๋กœ ๋กœ๊ทธ๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋กœ๊ทธ์˜ ์ผ๋ถ€๋งŒ ํ‘œ์‹œํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@dnephin ๋ฐ ๋‹ค๋ฅธ ๋ชจ๋“  ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ฑฐ์˜ 1 ๋…„ ์ „์—์ด ๋ฌธ์ œ๋ฅผ ์ œ๊ธฐํ–ˆ์œผ๋ฉฐ ๊ทธ ์ดํ›„๋กœ ์˜๊ฒฌ์„ ๋ณด๋ฉด ๋กœ๊ทธ ๊ด€๋ฆฌ๊ฐ€ ๋งŽ์€ compose ์‚ฌ์šฉ์ž์—๊ฒŒ ๊ณ ํ†ต ํฌ์ธํŠธ๋ผ๋Š” ๊ฒƒ์ด ๋ถ„๋ช…ํ•ด ๋ณด์ž…๋‹ˆ๋‹ค.

๋ช‡ ๊ฐ€์ง€ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ์–ธ๊ธ‰๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ €๋Š” ์ฃผ๋กœ max-size ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋กœ๊ทธ๋ฅผ ์ ์ ˆํ•œ ๊ธธ์ด๋กœ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋งŽ์€ ๋„์›€์ด๋˜๋ฉฐ ์ด๋Ÿฌํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์— ๊ฐ์‚ฌํ•˜์ง€๋งŒ ์ด๊ฒƒ์ด ํ•ด๊ฒฐ์ฑ…์ด ์•„๋‹ˆ๋ผ _ โ€‹โ€‹ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• _์ด๋ผ๋Š” ์ ์„ ๋ช…์‹ฌํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ์ฑ…์ž„์˜ ์ผ๋ถ€๊ฐ€ Docker ๋กœ๊น… ์‹œ์Šคํ…œ์— ์žˆ์œผ๋ฉฐ Compose๊ฐ€ ํ™œ์šฉํ•˜๊ธฐ ์œ„ํ•ด clear ๋ช…๋ น์„ ์ œ๊ณตํ•ด์•ผํ•œ๋‹ค๋Š” ๊ฒƒ์ด ์ด์ œ ๋ถ„๋ช…ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜์ด ํ‹ฐ์ผ“์ด ์ƒ์„ฑ ๋œ ์ดํ›„ Docker ๋ฆด๋ฆฌ์Šค์— ํฌํ•จ ๋œ ๋ช‡ ๊ฐ€์ง€ ๊ธฐ๋Šฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, --since=<timestamp> ๋ฐ --tail=<num-lines> ๋กœ Compose์—์„œ ์ง€์›ํ•˜์—ฌ ์‹ค์ œ ์ œ๊ณต์— ๋” ๊ฐ€๊น๊ฒŒ ๋‹ค๊ฐ€ ๊ฐˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ํ•ด๊ฒฐ์ฑ….

์˜ˆ๋ฅผ ๋“ค์–ด --since ๋ฅผ ์ง€์›ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

$ docker-compose logs --since=now my_container

๋˜๋Š”

$ docker-compose logs --since=5m my_container

--tail ๋Œ€ํ•œ ์ง€์›๋„ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ :

$ docker-compose logs --tail=100 my_container

๋ฐ ๋ฌผ๋ก  ์ด๋“ค์˜ ์กฐํ•ฉ. logging ๋ธ”๋ก์˜ ์ผ๋ถ€๋กœ docker-compose.yml ์—์„œ์ด๋ฅผ ์ง€์›ํ•˜๋Š” ๊ฒƒ๋„ ์ด์น˜์— ๋งž์„ ์ˆ˜ ์žˆ์ง€๋งŒ,์ด ๋‘ ๊ฐ€์ง€ ์˜ต์…˜์„ ์ง€์›ํ•˜๋Š” ๊ฒƒ๋งŒ์œผ๋กœ๋„ + 1์ด ํ‹ฐ์ผ“์„ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค.

์š”์•ฝํ•˜๋ฉด, ๋ชจ๋“  ํ”ผ๋“œ๋ฐฑ๊ณผ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•, ๊ทธ๋ฆฌ๊ณ  Docker์™€ Compose ์ž์ฒด์— ๋Œ€ํ•ด ๋‹ค์‹œ ํ•œ ๋ฒˆ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๋‘˜ ๋‹ค ํ›Œ๋ฅญํ•œ ์ œํ’ˆ์ž…๋‹ˆ๋‹ค.์ด ์Šค๋ ˆ๋“œ์— ์ œ์‹œ๋œ ์•„์ด๋””์–ด๋ฅผ ๊ณ ๋ คํ•˜๊ณ  ์ด๋Ÿฌํ•œ ์ œํ’ˆ์„ ๊ณ„์†ํ•ด์„œ ๋” ํ›Œ๋ฅญํ•˜๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

์š”์•ฝ์€ # 2227 ์ฐธ์กฐ

: +1 : ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค @dnephin , ๊ธฐ๋Œ€ํ•ฉ๋‹ˆ๋‹ค!

๋‚ด๊ฐ€ ํ•œ ์ผ์€ /var/lib/docker/containers/<container-id>/ ์•ˆ์—์žˆ๋Š” <container-id>-json.log ํŒŒ์ผ์„ ์ˆ˜๋™์œผ๋กœ ์‚ญ์ œํ•˜๋Š” ๊ฒƒ์ด ์—ˆ์Šต๋‹ˆ๋‹ค ( sudo ). docker-compose logs ์‹คํ–‰ํ•˜๋ฉด ๋กœ๊ทธ๊ฐ€ ๋น„์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ํ•ด๊ฒฐ์ฑ…์€ ์•„๋‹ˆ์ง€๋งŒ ์ ์ ˆํ•œ .bash ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ ๋นŒ๋“œ ์ „์— ์ •๋ฆฌ๋ฅผ ์ž๋™ํ™” ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํŽธ์ง‘ : ์ด์™€ ๊ฐ™์€ ๊ฒƒ์ด ํŠธ๋ฆญ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค (์ž์‹ ์˜ ์œ„ํ—˜ํ•˜์— ์‚ฌ์šฉ !!) :

sudo find /var/lib/docker/containers/ -type f -name '*-json.log' -delete

+1

+1

+1

+1

+2

+2

+1

+20

+1

+1

+1

+1

@sgarbesi clean ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๋ฉด ๋กœ๊ทธ ๊ธฐ๋Šฅ์ด ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๊นŒ?

+1

docker-logs-clean.sh

#!/bin/bash

for container_id in $(docker ps -a --filter="name=$name" -q);

    do file=$(docker inspect $container_id | grep -G '"LogPath": "*"' | sed -e 's/.*"LogPath": "//g' | sed -e 's/",//g');

    if [ -f $file ]
      then
          rm $file;
    fi

done

๊ธฐ๋„:

chmod +x docker-logs-clean.sh

sudo ./docker-logs-clean.sh

์ˆ˜๋™์œผ๋กœ ๋กœ๊ทธ๋ฅผ ์ง€์šฐ๋Š” ๋ช…๋ น ์ค„ ์˜ต์…˜์˜ ๊ฒฝ์šฐ +1

@kassanmoor ๋‚˜๋ฅผ ์œ„ํ•ด ์•Š์Šต๋‹ˆ๋‹ค.

+1

์ปจํ…Œ์ด๋„ˆ ๋กœ๊ทธ๋ฅผ ์ •๋ฆฌํ•˜๋Š” ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

๐Ÿ‘

+1 ๐Ÿ‘

+1!

+1

+1

+1

์ด๊ฒƒ์€ ํ›Œ๋ฅญํ•œ ๊ธฐ๋Šฅ์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ €๋Š” Java ๊ธฐ๋ฐ˜์˜ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋ช‡ ๊ฐœ ์žˆ๊ณ  ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ํ•˜๋ฃจ๋‚˜ ์ดํ‹€์ด ์ง€๋‚˜๋„ docker logs -f <container> ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐ 30 ์ดˆ ์ด์ƒ ๊ฑธ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Java๋Š” ์ด๋Ÿฌํ•œ ์—ฌ๋Ÿฌ ์ค„์„ ์ข‹์•„ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋กœ๊ทธ.

๊ตฌํ˜„ํ•˜๊ธฐ ๋” ์‰ฌ์šธ ์ˆ˜์žˆ๋Š” ๋˜ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์€ ๊ธฐ์กด ๋กœ๊ทธ docker logs -f -n <container> ๋ฅผ ๋ชจ๋‘ ๋ฐ˜์˜ํ•˜์ง€ ์•Š๊ณ  ๊ผฌ๋ฆฌ๋ฅผ ์‹œ์ž‘ํ•˜๋Š” ๋กœ๊ทธ์˜ ๋˜ ๋‹ค๋ฅธ ํ”Œ๋ž˜๊ทธ์ž…๋‹ˆ๋‹ค (์ƒˆ ๋กœ๊ทธ ๋งŒ ๋”ฐ๋ผ๊ฐ€๋Š” ๊ฒƒ์„ ์˜๋ฏธ). ์ด๊ฒƒ์€ ๋ช…๋ น์„ ์‹คํ–‰ ํ•œ ํ›„์—๋ฐ›์€ ๋กœ๊ทธ ๋ฉ”์‹œ์ง€ ๋งŒ ์—์ฝ”ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ ๋ฐ˜๋Œ€๋„ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค (๊ทธ๋ฆฌ๊ณ  gnu tail์ด ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹์— ๋” ๊ฐ€๊น์Šต๋‹ˆ๋‹ค) -f๋Š” ๋งˆ์ง€๋ง‰ 5-10 ์ค„์„ ์—์ฝ” ํ•œ ๋‹ค์Œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ƒˆ ์ค„์„ ์—์ฝ”ํ•˜๊ณ  ์ง€๊ธˆ์ฒ˜๋Ÿผ ๋ชจ๋“  ๊ฒƒ์„ ์—์ฝ”ํ•˜๋Š” ํ”Œ๋ž˜๊ทธ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค (์•„๋งˆ docker logs -f -a <container> ).

๊ทธ ๋ฉ”๋ชจ์—์„œ ๋‚˜๋Š” docker logs -100 <container> ์ฒ˜๋Ÿผ ๋ช‡ ์ค„์˜ ์ค„์ด ๋‚˜์—๊ฒŒ ๋งˆ์ง€๋ง‰ 100 ์ค„์„ ์ฃผ๋Š”์ง€ ์ง€์ •ํ•˜๋Š” ๊ฒƒ์„ ํ—ˆ์šฉํ•˜๋Š” gnu tail์˜ ๊ธฐ๋Šฅ์„ ๊ฐ–๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

+1

+1

+1

+1

+1

+1

+1

+1

+1

+1

Mac ์šฉ Docker์— ๋Œ€ํ•œ ํŠธ๋ฆญ์ด ์žˆ์Šต๋‹ˆ๊นŒ? ์ด๊ฒƒ์— ๋Œ€ํ•œ ๋ช…๋ น ์ค„ ์˜ต์…˜์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. :)

+1

+1

+1

์—…๋ฐ์ดํŠธ : 2016/10/08- "docker logs"๊ฐ€ Go ํ…œํ”Œ๋ฆฟ์„ ์ง€์›ํ•˜๋ฏ€๋กœ "jq"์— ๋Œ€ํ•œ ์š”๊ตฌ ์‚ฌํ•ญ์ด ์ œ๊ฑฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค! (https://docs.docker.com/engine/admin/formatting/)

์•ˆ๋…•ํ•˜์„ธ์š”,

์—ด ์ˆ˜์žˆ๋Š” ํŒŒ์ผ์„ ์‚ญ์ œํ•˜๋Š” ๊ฒƒ์€ ์ผ๋ฐ˜์ ์œผ๋กœ ๋‚˜์œ ์ƒ๊ฐ์ด๊ธฐ ๋•Œ๋ฌธ์— ํŠนํžˆ ๋””์Šคํฌ ๊ณต๊ฐ„์„ ์ ˆ์•ฝํ•˜๋ ค๋Š” ๊ฒฝ์šฐ์— ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค! - @sgarbesi , @lvitals & @wazoo (์•„์ด๋””์–ด๋“ค์—๊ฒŒ ๊ฐ์‚ฌ)์˜ ์ดˆ๊ธฐ ๋…ธ๋ ฅ์„ ํ™•์žฅํ•˜์—ฌ ์•„๋ž˜์— ์•ฝ๊ฐ„ ๋” ๊ธฐ๋Šฅ์ ์ธ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ƒ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.

์•„๋ž˜ ์ฝ”๋“œ๋ฅผ ํŒŒ์ผ์— ๋ณต์‚ฌ
vi ./docker-container-log-trim.sh
ํŒŒ์ผ์„ ์‹คํ–‰ ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋งŒ๋“ค๊ธฐ
chmod +x ./docker-container-log-trim.sh
๊ทธ๋Ÿฐ ๋‹ค์Œ
sudo ./docker-container-log-trim.sh

์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹ ๋ขฐํ•  ๋•Œ > ์ค„์˜ ์ฃผ์„ ์ฒ˜๋ฆฌ๋ฅผ ์ œ๊ฑฐํ•˜์‹ญ์‹œ์˜ค. ์—ฌ๊ธฐ์„œ ๋งˆ๋ฒ•์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. :-)

ํ”ผ๋“œ๋ฐฑ์„ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค.
๊ฐ์‚ฌ.

์ถ”์‹ . ํ…Œ์ŠคํŠธ๋˜์—ˆ์ง€๋งŒ ์ „ํˆฌ๋กœ ๊ฐ•ํ™”๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์ž์‹ ์˜ ์ฑ…์ž„ํ•˜์— ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค.

#!/bin/bash

# NOTES:
#  Does NOT delete logfile (BAD IDEA) - simply trims file with redirect.
#  Handles single/all-running/all-existing containers - see end of script for usage.
#  Enjoy :-)


_get_container_logfile() {

  case $1 in

    running) _trim_container_logfile "$(docker ps -q)" $2
             ;;

        all) _trim_container_logfile "$(docker ps -aq)" $2
             ;;

          *) _trim_container_logfile "$(docker ps -a | awk -v ID=$1 '$1 ~ ID || $NF ~ ID {print $1}')" $2
             ;;

  esac

}


_trim_container_logfile() {

  TEMP=$(mktemp)

  case $2 in
    *[!0-9]*) echo "[lines] must be a number - \"$2\" is not a number."
              exit 1
              ;;
        ''|*) MAX=${2:-1000}
              ;;
  esac


  if [ -z $1 ]
  then
    echo "Container name/id unknown!"
    exit 1
  else
    for container in $1
    do
      logfile="$logfile $(docker inspect --format '{{ .LogPath }}' $container)"
      echo "Keeping $MAX lines: $logfile"

      tail -n ${MAX} $logfile > $TEMP
      # Uncomment the next line when you trust the script!
      # cat $TEMP > $logfile
    done
  fi

  rm $TEMP
}


if [ -a "$(which docker)" ]
then
  case $1 in
    --trim) if [ -z $2 ]
            then
              echo "Container name/id missing!"
              exit 1
            else
              _get_container_logfile $2 $3
            fi
            ;;

    --trim-running) _get_container_logfile running $2
                    ;;

    --trim-all) _get_container_logfile all $2
                ;;

    *) echo "Usage:"
       echo "  --trim {container} [lines]   Keep [lines] of logfile for a single container"
       echo "  --trim-running     [lines]   Keep [lines] of logfile for all running containers"
       echo "  --trim-all         [lines]   Keep [lines] of logfile for all containers"
       echo "Default: lines=1000"
       exit 1
       ;;
  esac
else
  echo "Requires \"docker\""
  exit 1
fi

+1

+1

๊ทธ๋ž˜์„œ ๋ช…์‹œ์ ์ธ ๋ช…๋ฃŒ ํ•œ ๋ช…๋ น์— ๋Œ€ํ•œ ์†Œ์›์ด ์—ฌ๋Ÿฌ ๋ฒˆ ํ‘œํ˜„๋˜์—ˆ์œผ๋ฏ€๋กœ ์ถ”๊ฐ€ ๋œ ๋ช…๋ น์ด ํ•˜๋‚˜๋„ ์—†์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค์‹œ ์—ด๋ฆด ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

๋ฌผ๋ก  ๋„์ปค ์—”์ง„ ๋ณ€๊ฒฝ์— ๋”ฐ๋ผ ๋‹ค๋ฅด์ง€๋งŒ ๊ฒฐ๊ตญ ๋„์ปค ์ž‘์„ฑ์—์„œ๋„ ํ•ด๊ฒฐํ•ด์•ผ ํ•  ๋ฌธ์ œ์ด๋ฉฐ ๋ช…์‹œ์ ์ธ ๋ช…๋ น์— ๊ด€ํ•œ ํ•œ ํ™•์‹คํžˆ ์ˆ˜์ •๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

@DavidPesticcio ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•  ๋•Œ์ด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค : line 53: $logfile: ambiguous redirect (๋Œ“๊ธ€์„ ์ œ๊ฑฐํ•œ ํ›„)

์•ˆ๋…•ํ•˜์„ธ์š” @gingerlime , $ TEMP๊ฐ€ ์ฑ„์›Œ์ง€์ง€ ์•Š์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. "mktemp"๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ์ง€ ์•Š๊ฑฐ๋‚˜ ๊ฒฝ๋กœ์— ์—†์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. :-/

"๋‚˜์—๊ฒŒ ์ž˜ ๋งž์•„์š”"-๋„ค, ์•Œ์•„์š”, ๊ทธ๊ฑด ๋‹น์‹ ์—๊ฒŒ๋ณ„๋กœ ๋„์›€์ด๋˜์ง€ ์•Š์ง€๋งŒ ์‚ฌ์‹ค์ด์—์š” ... :-)

์Šคํฌ๋ฆฝํŠธ๋ฅผ ์—…๋ฐ์ดํŠธ ํ–ˆ์œผ๋ฏ€๋กœ ๋” ์ด์ƒ "jq"๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. mktemp๋„ ๋ˆ„๋ฝ ๋œ ๊ฒฝ์šฐ์—๋Š” ๊ตฌ์ œ ๊ธˆ์œต์„ ์ถ”๊ฐ€ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ํ‘œ์ค€ ๋„๊ตฌ๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค.ํ•˜์ง€๋งŒ "ํ‘œ์ค€"์„ค์น˜ ๋‚ด์˜ ์Šคํฌ๋ฆฝํŠธ-์ตœ์†Œํ•œ์˜ ์ปจํ…Œ์ด๋„ˆ ๋‚ด ์—์„œ์ฒ˜๋Ÿผ? :-)

๋„์›€์ด ๋˜์—ˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

๋‚˜๋Š” mktemp ์žˆ์œผ๋ฉฐ ์ž์ฃผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค ... ์‹ค์ œ๋กœ ๋””๋ฒ„๊น…ํ•˜๋Š” ๋ฐ ๋งŽ์€ ์‹œ๊ฐ„์„ ์†Œ๋น„ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์œ„์˜ ๊ฐ„๋‹จํ•œ ์Šคํฌ๋ฆฝํŠธ๋กœ ๋๋‚ฌ์Šต๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ๋Š” ์ค‘์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋‚ด ์„ค์ • (์ฆ‰, ๋ฃจํŠธ ์‚ฌ์šฉ์ž๋กœ ์‹คํ–‰ํ•˜์ง€ ์•Š์Œ) ์—์„œ์ด bash ์Šคํฌ๋ฆฝํŠธ๋Š” ๋กœ๊ทธ ํŒŒ์ผ์„ ์—ด๋ ค๊ณ  ์‹œ๋„ํ•˜๋Š” ๊ฒƒ์ด ๊ฑฐ๋ถ€๋‹นํ•˜๋Š” ๊ฒฝ์šฐ ๋„์›€์ด๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž๋กœ์„œ Docker๋ฅผ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋กœ๊ทธ ํŒŒ์ผ์„ ํ‘œ์‹œ ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ด ์•ฝ๊ฐ„ ์ด์ƒํ•ฉ๋‹ˆ๋‹ค.
docker / docker-compose ๋ช…๋ น์— ๋ฌด์–ธ๊ฐ€๋ฅผ ์ง€์ถœํ•ด์•ผํ•˜๋Š” ์ด์œ 

์•ž์„œ ์–ธ๊ธ‰ ํ•œ ์˜ค๋ฅ˜ ๋•Œ๋ฌธ์— @DavidPesticcio ์˜ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ˆ˜์ •ํ•ด์•ผํ–ˆ์Šต๋‹ˆ๋‹ค.

#!/bin/bash

# NOTES:
#  Does NOT delete logfile (BAD IDEA) - simply trims file with redirect.
#  Handles single/all-running/all-existing containers - see end of script for usage.
#  Enjoy :-)


_get_container_logfile() {

  case $1 in

    running) _trim_container_logfile "$(docker ps -q)" $2
             ;;

        all) _trim_container_logfile "$(docker ps -aq)" $2
             ;;

          *) _trim_container_logfile "$(docker ps -a | awk -v ID=$1 '$1 ~ ID || $NF ~ ID {print $1}')" $2
             ;;

  esac

}


_trim_container_logfile() {

  TEMP=$(mktemp)

  case $2 in
    *[!0-9]*) echo "[lines] must be a number - \"$2\" is not a number."
              exit 1
              ;;
        ''|*) MAX=${2:-1000}
              ;;
  esac


  if [ -z "$1" ]
  then
    echo "Container name/id unknown!"
    exit 1
  else
    for container in $1
    do
      logfile="$(docker inspect --format '{{.LogPath}}' $container)"
      if [ ! -f "$logfile" ]; then continue; fi
      echo "Keeping $MAX lines: $logfile"

      tail -n ${MAX} "$logfile" > "$TEMP"
      # Uncomment the next line when you trust the script!
      # cat "$TEMP" > "$logfile"
    done
  fi

  rm "$TEMP"
}


if [ -a "$(which docker)" ]
then
  case $1 in
    --trim) if [ -z $2 ]
            then
              echo "Container name/id missing!"
              exit 1
            else
              _get_container_logfile $2 $3
            fi
            ;;

    --trim-running) _get_container_logfile running $2
                    ;;

    --trim-all) _get_container_logfile all $2
                ;;

    *) echo "Usage:"
       echo "  --trim {container} [lines]   Keep [lines] of logfile for a single container"
       echo "  --trim-running     [lines]   Keep [lines] of logfile for all running containers"
       echo "  --trim-all         [lines]   Keep [lines] of logfile for all containers"
       echo "Default: lines=1000"
       exit 1
       ;;
  esac
else
  echo "Requires \"docker\""
  exit 1
fi

@dnephin ๋กœ๊ทธ์— ๋Œ€ํ•œ ๋ช…์‹œ์ ์ธ ์ผํšŒ์„ฑ ์ง€์šฐ๊ธฐ ๋ช…๋ น์ด ํ•„์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์ด ๋‹ค์‹œ ์—ด๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์ง€์ •๋œ ์ปจํ…Œ์ด๋„ˆ์˜ ๋กœ๊ทธ๋ฅผ ์ž๋ฆ…๋‹ˆ๋‹ค (๋ฃจํŠธ ์—ฌ์•ผ ํ•จ).

cp /dev/null $(docker inspect -f '{{.LogPath}}' container_name)

์‚ญ์ œ๊ฐ€ ์•„๋‹Œ ์ž๋ฅด๊ธฐ๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค. (์—ด๋ฆฐ ํŒŒ์ผ ํ•ธ๋“ค์—์„œ ์ฐธ์กฐํ•˜๋Š” ํŒŒ์ผ์„ ์‚ญ์ œํ•ด๋„ ํ”„๋กœ์„ธ์Šค (์ด ๊ฒฝ์šฐ Docker ๋ฐ๋ชฌ)๊ฐ€ ์™„์ „ํžˆ ์ข…๋ฃŒ ๋  ๋•Œ๊นŒ์ง€ ๊ณต๊ฐ„์ด ํšŒ์ˆ˜๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

@oogali ์ถฉ๋ถ„ํžˆ ๊ณต์ •ํ•ฉ๋‹ˆ๋‹ค. ์š”์ฒญ์— ๋”ฐ๋ผ ์ˆ˜ํ–‰ ํ•  ์ˆ˜์žˆ๋Š” ์ ์ ˆํ•œ ๋ช…๋ น์ด ์žˆ์œผ๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

+1

์ ์ ˆํ•œ ๋ช…๋ น์ด ์žˆ์œผ๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

+1
ํ•„์š”์— ๋”ฐ๋ผ ์ˆ˜ํ–‰ ํ•  ์ˆ˜์žˆ๋Š” ์ ์ ˆํ•œ ๋ช…๋ น์ด ์žˆ์œผ๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์ƒ๊ฐํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์‹œ์ž‘ ๋‚ ์งœ๋ฅผ ํ•„ํ„ฐ๋กœ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด ๋” ๋งŽ์€ ์ž‘์—…์ด๋ฉฐ ํ˜„์žฌ ์ถœ๋ ฅ์„๋ณด๊ธฐ ์œ„ํ•ด ์ง€์šฐ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜์‹ญ์‹œ์˜ค.

+1

+1

+1

+1

+1

์ ‘์„  ์ ์œผ๋กœ ๊ด€๋ จ๋œ ์ œ์•ˆ :

docker-compose logs -f ํ•˜๋ฉด ์ž๋™์œผ๋กœ --tail=30 (๋˜๋Š” ํ•ฉ๋ฆฌ์ ์ธ ๋‹ค๋ฅธ ์ˆซ์ž)๋กœ ๊ธฐ๋ณธ ์„ค์ •๋ฉ๋‹ˆ๋‹ค.

๋งŽ์€ ์ˆ˜์˜ ๋กœ๊ทธ๊ฐ€ ํ‘œ์‹œ๋˜๋ฉด ์‹œ๊ฐ„์ด ๋„ˆ๋ฌด ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋ฏ€๋กœ docker-compose logs -f ๋กœ๋Š” ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

+1

+1

+1

+1

+1

+1

+1

+1

+1

+1

๋˜๋Š”์ด ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

logpath=`docker inspect --format='{{.LogPath}}' reveelium_metricsextraction_1` && mv $logpath $logpath".bckup"

+1 ๋Œ“๊ธ€์„ ๊ทธ๋งŒ์ฃผ์„ธ์š”. ์ด ์Šค๋ ˆ๋“œ๋Š” ๊ท€์ค‘ํ•œ ์ •๋ณด๋ฅผ ์ฝ๊ณ  ์ถ”์ถœํ•˜๊ธฐ๊ฐ€ ์ •๋ง ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•œ OP ๊ฒŒ์‹œ๋ฌผ์— ์ข‹์•„์š” ๋ฒ„ํŠผ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

Mac ์šฉ Docker์™€ ํ•จ๊ป˜ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ์€ ์—†์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š”์ด ์Šค๋ ˆ๋“œ์™€ ๋„์ปค ํฌ๋Ÿผ์„ ์ฝ๋Š” ๊ฒƒ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ์„ ํ•จ๊ป˜ ํ•ดํ‚นํ–ˆ์Šต๋‹ˆ๋‹ค.

D4M์˜ ๋ฌธ์ œ๋Š” Mac์—์„œ๋Š” ์‹ค์ œ๋กœ xhyve vm์—์„œ ๋ช…๋ น์„ ์‹คํ–‰ํ•ด์•ผํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์—ฌ๊ธฐ์— ์ œ๊ฐ€ ์ƒ๊ฐ ํ•ด๋‚ธ ๊ฒƒ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋‘ ๊ธฐ๋Šฅ ์„ .bash_profile .

์ค‘์š” : ๊ณ„์†ํ•˜๊ธฐ ์ „์— ์ƒˆ ์…ธ์„ ์‹œ์ž‘ํ•˜๊ฑฐ๋‚˜ ํ”„๋กœํ•„์„ ๋‹ค์‹œ๋กœ๋“œํ•˜๋Š” ๊ฒƒ์„ ์žŠ์ง€ ๋งˆ์‹ญ์‹œ์˜ค.


์ด์ œ docker-logs-clean ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

#!/bin/bash -e

if [[ -z $1 ]]; then
    echo "No container specified"
    exit 1
fi

logFile=$(docker inspect -f '{{.LogPath}}' $1 2> /dev/null)

echo -n "Cleaning ${logFile}... "
d4mexec << EOF
> $logFile
EOF
echo "done"

๋กœ๊ทธ ํŒŒ์ผ์„ rm ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ > ํ•˜๋ฉด ํŒŒ์ผ์ด ์™„์ „ํžˆ ์ž˜๋ฆฝ๋‹ˆ๋‹ค.

docker-compose ๋ฒ„์ „ 2์˜ FWIW๋Š” ๋กœ๊ทธ ํŒŒ์ผ ํฌ๊ธฐ๋ฅผ ์ œํ•œํ•˜๋Š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค.

version: '2'
services:
  my-service:
    image: nginx:alpine
    restart: always
    logging:
      # limit logs retained on host to 25MB
      driver: "json-file"
      options:
        max-size: "500k"
        max-file: "50"

Docker ์›น ์‚ฌ์ดํŠธ์— ์ž˜ ๋ฌธ์„œํ™”๋˜์–ด ์žˆ์ง€ ์•Š์œผ๋ฉฐ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์œ ์šฉ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

+1

+1

+1

+1

+1

๊ฐ„๋‹จํ•œ ์Šคํฌ๋ฆฝํŠธ docker_clear_log.sh ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค .
sudo truncate -s 0 $(docker inspect --format='{{.LogPath}}' $1)
์‚ฌ์šฉ๋ฒ• : ./docker_clear_log.sh [์ด๋ฆ„ ๋˜๋Š” ID]
sudo ๊ถŒํ•œ์ด ์žˆ๊ณ  Docker์— ๋Œ€ํ•œ log_driver: "json-file" ์„ค์ •์ด์žˆ๋Š” ๊ฒฝ์šฐ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค (๊ธฐ๋ณธ๊ฐ’).

+1

๋‚˜๋Š” ๋˜ํ•œ ์ž„์‹œ ์†”๋ฃจ์…˜์„ ์‹œ๋„ํ–ˆ์ง€๋งŒ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค.

์›๋ž˜ ๋ฌธ์ œ๋Š” ํ•ด๊ฒฐ๋˜์ง€ ์•Š์•˜์œผ๋ฉฐ ์–ด์จŒ๋“  ๋ฌธ์ œ๊ฐ€ ์ข…๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํฅ๋ฏธ ๋กญ๊ตฐ. @djessup , ๊ทธ ์‚ฌ๊ณผ๋Š” ์–ด๋–ป์Šต๋‹ˆ๊นŒ?

docker-compose ๋กœ๊ทธ๋ฅผ ๊ฐ–๋Š” ๊ฒƒ์ด ์—ฌ์ „ํžˆ ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ฌธ์ œ ์ž์ฒด๊ฐ€ ํ•ด๊ฒฐ๋˜์ง€ ์•Š์•˜๋Š”๋ฐ ์™œ์ด ๋ฌธ์ œ๊ฐ€ ์ฝ”๋ฉ˜ํŠธ์—†์ด ์ข…๊ฒฐ ๋˜์—ˆ์Šต๋‹ˆ๊นŒ?

@linvi

์ด ์Šค๋ ˆ๋“œ์— ์™”์„ ๋•Œ ๋‹ซ๋Š” ์ฃผ์„์ด ๋‹ค๋ฅธ ์ฃผ์„์œผ๋กœ ์ ‘ํ˜€์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฐ”๋กœ ์—ฌ๊ธฐ์— ์žˆ์Šต๋‹ˆ๋‹ค.

https://github.com/docker/compose/issues/1083#issuecomment -149357280

๊ฐ„์ ‘์  ์ธ ์ˆ˜๋‹จ์„ ํ†ตํ•ด์ด ํŠน์ • ์‚ฌ์šฉ ์‚ฌ๋ก€๋ฅผ ๋‹ค๋ฃจ๊ธฐ๋ฅผ ํฌ๋งํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ํŠน์ • ์‚ฌ์šฉ ์‚ฌ๋ก€์ด๊ณ  ์–ด๋–ป๊ฒŒ ์ ์šฉ๋˜์ง€ ์•Š๋Š”์ง€ ์–ธ๊ธ‰ํ•˜๋ฉด โ€‹โ€‹ํ‹ฐ์ผ“์„ ๋‹ค์‹œ ์—ฌ๋Š” ๋ฐ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ตœ์•…์˜ ๊ฒฝ์šฐ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์›ํ•˜๋Š” ๊ฒƒ์„ ์‰ฝ๊ฒŒ ์–ป์„ ์ˆ˜์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์ง€์  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์—…๋ฐ์ดํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

๋กœ๊ทธ๊ฐ€ ์žˆ์œผ๋ฉด ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ์ง€์šธ ์ˆ˜ ์žˆ์–ด์•ผํ•ฉ๋‹ˆ๋‹ค.

๋ช…๋ น์„ ๋นŒ๋“œ ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ •๋ง ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์–ด๋ ต์ง€ ์•Š์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
์ˆ˜์ฒœ ๋ช…์˜ ์‚ฌ๋žŒ๋“ค์ด ๋ชจ๋“  ๊ฒƒ์„ ์Šคํฌ๋กคํ•˜์ง€ ์•Š์•„๋„ ๋งค์šฐ ๊ธฐ๋ปํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

docker-compose๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๋กœ๊ทธ๋ณด๊ธฐ์— lazydocker ๋ฅผ ์‚ฌ์šฉ

grafik

https://github.com/jesseduffield/lazydocker
ํ•œ ์ค„๋กœ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ข‹์€ ๋ชจ๋‹ˆํ„ฐ๋ง ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. ์‚ฌ๋žŒ๋“ค์ด "๋กœ๊ทธ ์‚ญ์ œ"๊ธฐ๋Šฅ์ด ์ข‹์€ ๊ฒƒ์ž„์„ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์ด ๊ทธ๋‹ค์ง€ ํ•ฉ๋ฆฌ์ ์ด์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ์€ ์†Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ lazy docker๋ฅผ ์‚ฌ์šฉํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ ๋‚˜๋ฅผ ์œ„ํ•ด ๊ทธ๊ฒƒ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋‹ˆํ„ฐ๋ง ๋„๊ตฌ์— ๊ฒŒ ์œผ๋ฅด๋Š” ๊ฐ€๋Šฅ์„ฑ์„ ์ฃผ์‹  jesseduffield์—๊ฒŒ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค :-)
๋””๋ฒ„๊น… / ๋ชจ๋‹ˆํ„ฐ๋ง์ด ๋” ์‰ฌ์›Œ์ง€๋ฉด lazydocker์— ๊ธฐ๋ถ€ํ•˜๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•ด๋ณด์‹ญ์‹œ์˜ค.
๊ทธ๋ฆฌ๊ณ  ๋‹น์‹ ์„ ์œ„ํ•ด ๋„์ปค ๊ฐœ๋ฐœ์ž / ๊ด€๋ฆฌ์ž : ์™œ ๋„์ปค์˜ ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๊นŒ?
Docker๋Š” ๋งค์šฐ ํ›Œ๋ฅญํ•˜์ง€๋งŒ lazydocker๋ฅผ ์‚ดํŽด๋ณด์‹ญ์‹œ์˜ค. ๊ฐœ์„ ์˜ ์—ฌ์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

+2147483647

+49324893

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰