Использование флага --json для вывода событий в формате JSON
На этом шаге мы научимся выводить события Docker в формате JSON с помощью флага --json
команды docker events
. Вывод событий в формате JSON полезен для программной обработки и интеграции с другими инструментами.
Сначала убедитесь, что находитесь в директории ~/project/my-compose-app
.
cd ~/project/my-compose-app
Теперь запустим команду docker events
с флагом --json
. Это будет выводить события в формате JSON.
docker events --json
Вы увидите непрерывный поток JSON-объектов, где каждый объект представляет событие Docker. Вывод будет выглядеть примерно так (детали могут отличаться):
{"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}
...
Каждая строка представляет собой валидный JSON-объект, содержащий детальную информацию о событии, такую как status
, id
затронутого объекта, Type
, Action
и детали Actor
, включая Attributes
(например, имя образа и имя контейнера).
Для демонстрации захвата этих событий давайте остановим, а затем снова запустим сервис web
, пока команда docker events --json
выполняется в другом терминале или фоне. Поскольку в этой лаборатории мы используем один терминал, сначала остановим команду docker events --json
, нажав Ctrl + C
.
Теперь остановим сервис web
.
docker-compose stop web
Вы должны увидеть вывод, указывающий на остановку контейнера web
.
[+] Stopping 1/1
⠿ Container my-compose-app-web-1 Stopped
Теперь запустим docker events --json
в фоновом режиме и снова запустим сервис. Мы используем символ &
для запуска команды в фоне.
docker events --json &
Вы увидите идентификатор процесса (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 %<номер_задачи>
. Альтернативно можно найти идентификатор процесса с помощью ps aux | grep 'docker events --json'
и использовать команду kill
с PID. В данном контексте проще просто перейти к следующему шагу, так как фоновый процесс не будет существенно мешать.
На этом шаге мы успешно использовали флаг --json
для просмотра событий Docker в структурированном JSON-формате, что ценно для автоматизации и анализа.