Форматирование json вывода из docker событий - PullRequest
0 голосов
/ 25 марта 2020

Я хочу, чтобы вывод событий docker был более читабельным. Я на windows 10 pro и на PowerShell я запускаю эту команду.

docker events --format "{{json.}}"

В другой оболочке при создании нового контейнера

docker создать mcr.microsoft.com/dotnet/core/sdk:3.1

Я получаю некоторый вывод в формате json в первой оболочке. И это выглядит примерно так.

{"status": "create", "id": "7897095c22919bcdcf39612386bebed63296bc33be250445e6069bf4fe90ce37", "from": "mcr.microsoft.com/dotnet/core 3,1" , "Тип": "контейнер", "Действие": "создать", "Актер": { "ID": "7897095c22919bcdcf39612386bebed63296bc33be250445e6069bf4fe90ce37", "Атрибуты": { "образ": "mcr.microsoft.com/dotnet/ core / sdk: 3.1 "," name ": "jective_bhaskara"}}, "scope": "local", "time": 1585135301, "timeNano": 1585135301351718800}

У меня вопрос такой, Есть ли лучший способ отформатировать это? Что я должен сделать с командой

docker events --format "{{json.}}"

, чтобы она была отформатирована в более читаемый способ. Есть ли что-то, чтобы передать этот вывод, чтобы он мог выглядеть примерно так: Я использовал какой-то онлайн форматтер, чтобы добраться до этого.

docker event output formatted

ОБНОВЛЕНИЕ

Его теперь разрешено.

Согласно ответу @ Vijay , я впервые установил jq . Шаги:

  1. Запустил power shell от имени администратора.

  2. Запустил команду choco install jq

  3. Открыта новая командная строка НЕ powershell. Каким-то образом Power Shell не работает.

  4. Выполните команду для прослушивания docker событий .

  5. Если выходные данные должны быть отформатированы , используйте команду. Также добавьте jq следующим образом. Обратите внимание на двойные кавычки ("). Одинарные кавычки (') не работали.

docker events --format" {{json.}} "| JQ

Откройте другое приглашение и выполните следующую команду. Это может быть PowerShell, если вы sh.

docker запустите hello-world

Теперь вы должны видеть отформатированный json поток в реальном времени.

Ответы [ 2 ]

1 голос
/ 25 марта 2020

Использование формы первого ответа Prettify json в powershell 3 :

$Json = '{"status":"create","id":"7897095c22919bcdcf39612386bebed63296bc33be250445e6069bf4fe90ce37","from":"mcr.microsoft.com/dotnet/core/sdk:3.1","Type":"container","Action":"create","Actor":{"ID":"7897095c22919bcdcf39612386bebed63296bc33be250445e6069bf4fe90ce37","Attributes":{"image":"mcr.microsoft.com/dotnet/core/sdk:3.1","name":"objective_bhaskara"}},"scope":"local","time":1585135301,"timeNano":1585135301351718800}'
$PrettyJson = $Json | convertfrom-json | convertto-json -depth 100
$PrettyJson

Результат:

{
  "status": "create",
  "id": "7897095c22919bcdcf39612386bebed63296bc33be250445e6069bf4fe90ce37",
  "from": "mcr.microsoft.com/dotnet/core/sdk:3.1",
  "Type": "container",
  "Action": "create",
  "Actor": {
    "ID": "7897095c22919bcdcf39612386bebed63296bc33be250445e6069bf4fe90ce37",
    "Attributes": {
      "image": "mcr.microsoft.com/dotnet/core/sdk:3.1",
      "name": "objective_bhaskara"
    }
  },
  "scope": "local",
  "time": 1585135301,
  "timeNano": 1585135301351718800
}
1 голос
/ 25 марта 2020

Вы можете просто передать jq в команду docker events.

docker events --format '{{json .}}' | jq

jq Документация

...