--json 플래그를 사용하여 JSON 형식으로 이벤트 출력
이 단계에서는 docker events 명령과 함께 --json 플래그를 사용하여 Docker 이벤트를 JSON 형식으로 출력하는 방법을 배웁니다. JSON 형식으로 이벤트를 출력하는 것은 프로그래밍 방식으로 처리하고 다른 도구와 통합하는 데 유용합니다.
먼저, ~/project/my-compose-app 디렉토리에 있는지 확인합니다.
cd ~/project/my-compose-app
이제 --json 플래그와 함께 docker events 명령을 실행해 보겠습니다. 이렇게 하면 JSON 형식으로 이벤트를 스트리밍합니다.
docker events --json
각 객체가 Docker 이벤트를 나타내는 JSON 객체의 연속적인 스트림을 볼 수 있습니다. 출력은 다음과 유사합니다 (세부 정보는 다를 수 있음).
{"status":"create","id":"1234567890abcdef...","from":"nginx:latest","Type":"container","Action":"create","Actor":{"ID":"1234567890abcdef...","Attributes":{"image":"nginx:latest","name":"my-compose-app-web-1"}},"scope":"local","time":1678886400,"timeNano":1678886400123456789}
{"status":"start","id":"1234567890abcdef...","from":"nginx:latest","Type":"container","Action":"start","Actor":{"ID":"1234567890abcdef...","Attributes":{"image":"nginx:latest","name":"my-compose-app-web-1"}},"scope":"local","time":1678886401,"timeNano":1678886401987654321}
...
각 줄은 이벤트 status, 영향을 받는 객체의 id, Type, Action 및 이미지 이름 및 컨테이너 이름과 같은 Attributes를 포함한 Actor 세부 정보와 같은 이벤트에 대한 자세한 정보를 포함하는 유효한 JSON 객체입니다.
이러한 이벤트를 캡처하는 것을 시연하기 위해 다른 터미널 또는 백그라운드에서 docker events --json 명령이 실행되는 동안 web 서비스를 중지한 다음 다시 시작해 보겠습니다. 이 랩에서는 단일 터미널을 사용하므로 먼저 Ctrl + C를 눌러 docker events --json 명령을 중지합니다.
이제 web 서비스를 중지해 보겠습니다.
docker-compose stop web
web 컨테이너가 중지되고 있음을 나타내는 출력을 볼 수 있습니다.
[+] Stopping 1/1
⠿ Container my-compose-app-web-1 Stopped
이제 백그라운드에서 docker events --json을 실행한 다음 서비스를 다시 시작해 보겠습니다. & 기호를 사용하여 명령을 백그라운드에서 실행합니다.
docker events --json &
명령이 백그라운드에서 실행되고 있음을 나타내는 프로세스 ID (PID) 가 출력됩니다.
이제 web 서비스를 다시 시작합니다.
docker-compose start web
web 컨테이너가 시작되고 있음을 나타내는 출력을 볼 수 있습니다.
[+] Starting 1/1
⠿ Container my-compose-app-web-1 Started
백그라운드에서 실행되는 docker events --json 명령은 stop 및 start 이벤트를 캡처합니다. 백그라운드 프로세스의 출력을 보려면 fg 명령을 사용하여 포그라운드로 가져오거나 백그라운드 프로세스가 중지된 후 터미널 출력을 확인해야 할 수 있습니다. 그러나 이 단계의 목적을 위해 --json으로 명령을 실행하는 것만으로도 형식을 이해하는 데 충분합니다.
백그라운드 docker events --json 프로세스를 중지하려면 jobs 명령을 사용하여 백그라운드 작업을 나열한 다음 kill %<job_number>를 사용할 수 있습니다. 또는 ps aux | grep 'docker events --json'을 사용하여 프로세스 ID 를 찾고 PID 와 함께 kill 명령을 사용할 수 있습니다. 이 컨텍스트에서 더 간단한 방법은 백그라운드 프로세스가 크게 간섭하지 않으므로 다음 단계로 진행하는 것입니다.
이 단계에서는 자동화 및 분석에 유용한 구조화된 JSON 형식으로 Docker 이벤트를 보기 위해 --json 플래그를 성공적으로 사용했습니다.