docker system events
docker system events
docker system events는 Docker 서버에서 실시간 이벤트를 받는 명령이에요. 컨테이너·이미지·네트워크 등의 활동을 실시간으로 추적하고 싶을 때 사용해요.
출처: 문서
본문
docker events로 서버에서 실시간 이벤트를 받아요. 이벤트는 Docker 객체 유형마다 달라요. 이벤트 유형마다 범위가 다른데, 로컬 범위 이벤트는 발생한 노드에서만 보이고, 스웜 범위 이벤트는 모든 매니저에서 보여요.
마지막 256개 로그 이벤트만 반환돼요. 필터로 반환되는 이벤트 수를 더 줄일 수 있어요.
docker system events [OPTIONS]
별칭으로 docker events를 쓸 수 있어요.
객체 유형별 이벤트
- 컨테이너:
attach,commit,copy,create,destroy,detach,die,exec_create,exec_detach,exec_die,exec_start,export,health_status,kill,oom,pause,rename,resize,restart,start,stop,top,unpause,update - 이미지:
delete,import,load,pull,push,save,tag,untag - 플러그인:
enable,disable,install,remove - 볼륨:
create,destroy,mount,unmount - 네트워크:
create,connect,destroy,disconnect,remove - 데몬:
reload - 서비스:
create,remove,update - 노드:
create,remove,update - 시크릿:
create,remove,update - 컨피그:
create,remove,update
시간으로 이벤트 제한 (--since, --until)
--since와 --until 매개변수는 Unix 타임스탬프, 날짜 형식 타임스탬프, 또는 ParseDuration이 지원하는 Go 기간 문자열(예: 10m, 1h30m)을 받아요. 클라이언트 머신 시간 기준으로 계산돼요. --since 옵션을 주지 않으면 새 이벤트/라이브 이벤트만 반환해요. 타임스탬프 끝에 Z나 +-00:00 오프셋을 주지 않으면 클라이언트의 로컬 시간대를 사용해요.
필터링 (--filter)
-f/--filter 형식은 key=value예요. 같은 필터를 여러 번 쓰면 OR, 서로 다른 필터는 AND로 해석돼요.
지원하는 필터는 다음과 같아요.
config(config=)container(container=)daemon(daemon=)event(event=)image(image=)label(label=또는label==)network(network=)node(node=)plugin(plugin=)scope(scope=)secret(secret=)service(service=)type(type=)volume(volume=)
출력 형식 (--format)
--format을 지정하면 기본 형식 대신 주어진 템플릿이 실행돼요. Go의 text/template 패키지가 형식의 모든 세부 사항을 설명해요. 형식이 {{json .}}로 설정되면 이벤트는 JSON Lines 형식으로 스트리밍돼요.
지원하는 옵션은 다음과 같아요.
| 옵션 | 기본값 | 설명 |
|---|---|---|
-f, --filter |
조건에 따라 출력을 필터링해요. | |
--format |
Go 템플릿으로 출력을 꾸며요. json은 JSON 형식으로, TEMPLATE은 주어진 Go 템플릿으로 출력해요. |
|
--since |
타임스탬프 이후에 생성된 모든 이벤트를 보여줘요. | |
--until |
이 타임스탬프까지 이벤트를 스트리밍해요. |
예시
두 개의 셸이 필요해요. 셸 1에서 이벤트를 듣고, 셸 2에서 컨테이너를 시작·중지해요.
$ docker events
$ docker create --name test alpine:latest top
$ docker start test
$ docker stop test
이벤트 출력 예시예요.
2017-01-05T00:35:58.859401177+08:00 container create 0fdb48addc82871eb34eb23a847cfd033dedd1a0a37bef2e6d9eb3870fc7ff37 (image=alpine:latest, name=test)
2017-01-05T00:36:04.703631903+08:00 network connect e2e1f5ceda09d4300f3a846f0acfaa9a8bb0d89e775eb744c5acecd60e0529e2 (container=0fdb...ff37, name=bridge, type=bridge)
2017-01-05T00:36:04.795031609+08:00 container start 0fdb...ff37 (image=alpine:latest, name=test)
...
docker events 명령을 종료하려면 CTRL+C를 눌러요.
JSON으로 형식화
이벤트를 JSON으로 나열하려면 json 지시자를 사용해요 (--format '{{ json . }}와 같음).
$ docker events --format json
{"status":"create","id":"196016a57679bf42424484918746a9474cd905dd993c4d0f4..
{"status":"attach","id":"196016a57679bf42424484918746a9474cd905dd993c4d0f4..
...