์๋ Fig์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์ ์ฉ ํ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ ๊ธฐ๋ฅ์ด์์ผ๋ฉฐ ์ด์ Compose๋ Composed-managed ์ปจํ ์ด๋์ ๋ํ ๋ก๊ทธ ๊ธฐ๋ก์ ์ง์ฐ๋ ๊ธฐ๋ฅ์ด ๋ ๊ฒ์ ๋๋ค. ์ค๋ ์คํ๋๊ฑฐ๋ "์๋ค์ค๋ฌ์ด"์ปจํ ์ด๋๋ ์ํ์ง ์์ ์์๋ ๋ง์ ๋ก๊ทธ ๋ ธ์ด์ฆ๋ก ๋๋ ์ ์์ต๋๋ค.
๋ค์๊ณผ ๊ฐ์ ๋ช
๋ น์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ๊ฒ์ผ๋ก ๊ธฐ๋ํฉ๋๋ค.
$ docker-compose logs --clear [service]
๋๋ ๊ทธ๊ฒ์ด ๋์ปค ๋ฐ๋ชฌ์ด ์ง์ํ๋ ๊ธฐ๋ฅ์ด๋ผ๊ณ ์๊ฐํ์ง ์์ต๋๋ค. 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 ๊ณผ ๋์ผํ ํ์
์์ฝํ์๋ฉด :
logs
๋ช
๋ น์ ์ถ๋ ฅ์ ์ ํ ํ ์ ์์์ ๋ค๋ฃน๋๋ค.์ด๋ฏธ ๋ค๋ฅธ ๋ฌธ์ ์์ ์ง์๋๊ฑฐ๋ ์ถ์ ๋์์ผ๋ฏ๋ก์ด ๋ฌธ์ ๋ฅผ ์ข ๋ฃํฉ๋๋ค.
์ ์ด๊ฒ์ด ๋ซํ๋์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ๋ก๊ทธ ๊ธฐ๋ก์ ์ด๋ป๊ฒ ์ง์ฐ๋์?
๋๋ ์ถ๊ฐํ๋ค :
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์์ ๋ด ์๊ฒฌ์ ๋ฐ๋ณตํ๋ ค๋ฉด :
์์ฝํ์๋ฉด :
์ฐพ๊ณ ์๋ ๊ฒ์ด 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 ๋ฅผ ์ฌ์ฉ
https://github.com/jesseduffield/lazydocker
ํ ์ค๋ก ์ค์นํ ์ ์์ผ๋ฉฐ ์ข์ ๋ชจ๋ํฐ๋ง ๋๊ตฌ์
๋๋ค. ์ฌ๋๋ค์ด "๋ก๊ทธ ์ญ์ "๊ธฐ๋ฅ์ด ์ข์ ๊ฒ์์ ์ดํดํ๋ ๊ฒ์ด ๊ทธ๋ค์ง ํฉ๋ฆฌ์ ์ด์ง ์๋ค๋ ๊ฒ์ ์๋ฌธ์
๋๋ค.
๊ทธ๋ฌ๋ lazy docker๋ฅผ ์ฌ์ฉํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋๋ฅผ ์ํด ๊ทธ๊ฒ์ ์ํํฉ๋๋ค. ๋ชจ๋ํฐ๋ง ๋๊ตฌ์ ๊ฒ ์ผ๋ฅด๋ ๊ฐ๋ฅ์ฑ์ ์ฃผ์ jesseduffield์๊ฒ ๊ฐ์ฌ๋๋ฆฝ๋๋ค :-)
๋๋ฒ๊น
/ ๋ชจ๋ํฐ๋ง์ด ๋ ์ฌ์์ง๋ฉด lazydocker์ ๊ธฐ๋ถํ๋ ๊ฒ์ ๊ณ ๋ คํด๋ณด์ญ์์ค.
๊ทธ๋ฆฌ๊ณ ๋น์ ์ ์ํด ๋์ปค ๊ฐ๋ฐ์ / ๊ด๋ฆฌ์ : ์ ๋์ปค์ ์ธํฐํ์ด์ค๊ฐ ๊ทธ๋ ์ง ์์ต๋๊น?
Docker๋ ๋งค์ฐ ํ๋ฅญํ์ง๋ง lazydocker๋ฅผ ์ดํด๋ณด์ญ์์ค. ๊ฐ์ ์ ์ฌ์ง๊ฐ ์์ต๋๋ค.
+2147483647
+49324893
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
docker logs -c (clear) <container>
๊ฐ ์ข์ ๊ฒ์ ๋๋ค.+1