GEEKS

Como se tornar um usuário avançado do Docker CLI com “–layout” e modelos de saída

Como se tornar um usuário avançado do Docker CLI com “–layout” e modelos de saída

Usar a CLI do Docker para listar e inspecionar os recursos em seu sistema geralmente produz uma saída detalhada que pode ocultar detalhes importantes. O Docker suporta a sintaxe de modelagem do Cross em conjunto com o --format sinalizador para lhe dar controle sobre o que é exibido.



Aprender a usar modelos pode transformá-lo em um usuário avançado da CLI do Docker. Eles permitem que você selecione e transforme com eficiência as saídas de comando para criar as visualizações de que você precisa. Isso resulta em uma experiência CLI mais produtiva e menos pace gasto na varredura de longas linhas de console.

Quais comandos suportam “–layout”?

o --format sinalizador é suportado pelos mais comumente usados docker comandos. Você pode usá-lo com docker check up on e comandos que produzem listas de itens, como docker playstation, docker picturese docker volumes.

Ao incluir o --format sinalizador, o Docker enviará a saída do comando por meio da string do modelo Cross que você fornecer. Você pode usar os recursos de modelagem fornecidos pelo Cross para consumir espaços reservados definidos pelo Docker. Eles fornecem acesso aos dados buscados pela CLI.

Um exemplo básico

Corrida docker check up on em um contêiner exibe um objeto JSON longo que geralmente transborda sua janela de terminal. Usando --formatvocê pode extrair as partes específicas dos dados em que está interessado. Veja um exemplo que mostra o standing, o PID e o horário de início do contêiner:

~$ docker check up on 94a8d1315315 --format '.State.Standing (PID: .State.Pid) .State.StartedAt'
operating (PID: 1488278) 2022-03-22T20:45:58.614115689Z

É muito mais fácil identificar os valores de destino usando um modelo do que ao vasculhar manualmente o JSON bruto.

Acessando valores de saída

As partes dinâmicas do seu modelo são envolvidas em parênteses curvos duplos. Você pode referenciar valores na saída do comando do Docker usando o .Box sintaxe. Box deve ser o nome de uma propriedade na representação JSON dessa saída. Os campos aninhados são selecionados usando uma sintaxe encadeada semelhante aos acessos de propriedade em JavaScript, .Box.NestedValue.

Você pode descobrir quais campos estão disponíveis visualizando a saída bruta do comando. docker check up on exibe JSON por padrão; isso pode ser mapeado diretamente para os espaços reservados da sintaxe do modelo. Para outros comandos como playstation e picturesvocê pode recuperar a estrutura JSON subjacente usando um modelo especial:

docker playstation --format 'json .`

o json A função exibe a versão JSON bruta dos dados que você fornece.

Transformações Simples

As funções de transformação oferecem uma maneira conveniente de manipular valores. higher e decrease converter strings para maiúsculas e minúsculas, respectivamente. Você pode aplicar maiúsculas e minúsculas a uma string com identify. As funções são inseridas no modelo antes do valor em que operam:

~$ docker check up on 94a8d1315315 --format 'higher .State.Standing (PID: .State.Pid)'
RUNNING (PID: 1488278)

Se você quiser adicionar um caractere de nova linha entre os valores, use o println função:

~$ docker check up on 94a8d1315315 --format '.State.Standing .State.Pidprintln.State.StartedAt'
operating 1488278
2022-03-22T20:45:58.614115689Z

Trabalhando com arrays

A sintaxe do modelo tem suporte integrado para iterar os elementos de uma matriz. o vary função faz um loop sobre os valores de uma matriz e outline o . variável para cada um:

~$ docker check up on 94a8d1315315 --format 'vary .Mountsprintln .Destinationend'
/config
/knowledge

Você pode combinar elementos de matriz junto com o sign up for função:

~$ docker check up on 94a8d1315315 --format 'sign up for .Config.Cmd " "'
caddy run --config /and many others/caddy/Caddyfile --adapter caddyfile

Isso cria uma string que incorpora cada valor na matriz. Os elementos são unidos com o texto especificado como segundo parâmetro do argumento.

Tabulação de saída

Muitos comandos do Docker são padronizados para mostrar dados em um format de tabela legível por humanos. Você pode criar suas próprias tabelas usando o especial desk componente de modelo.

Usar t caracteres para separar campos de dados em colunas de tabela. O modelo será executado para cada um dos itens incluídos na saída do comando da CLI do Docker. As colunas da tabela são dimensionadas automaticamente para corresponder ao comprimento de seu conteúdo.

~$ docker pictures --format 'desk .IDt.Tagt.Measurement'
IMAGE ID       TAG          SIZE
ede20431e41f   caddy        40.4MB
e5179b119094   <none>       40.4MB

O Docker inclui automaticamente os cabeçalhos de coluna apropriados para os campos em seu modelo.

Formatação condicional

Os modelos também suportam declarações condicionais “if”. Você pode personalizar dinamicamente a saída do comando exibindo um valor diferente com base em uma condição:

~$ docker playstation --format '.ID if eq .State "operating"AliveelseNot Runningend'
94a8d1315315 Alive

Este modelo exibe Alive ou Now not Working dependendo se cada recipiente State campo está definido para operating. o if block é seguido pelo valor que é mostrado quando a condição corresponde. Um opcional else bloco pode ser encadeado depois. A condição é encerrada pelo finish palavra-chave.

Os modelos Cross entendem vários operadores de comparação. o eq mostrado acima verifica se o primeiro valor é igual ao segundo. Além disso, as seguintes opções estão disponíveis:

  • ne – Uma comparação “não igual a”.
  • lt – Uma comparação “menor que” (<).
  • lte – Uma comparação “menor que ou igual a” (<=).
  • gt – Uma comparação “maior que” (>).
  • gte – Uma comparação “maior ou igual a” (>=).

and, ore no longer palavras-chave também para encadear condições em expressões complexas.

Formatação avançada usando Jq

o --format flag é usado principalmente para criar strings de saída legíveis por humanos. Se você estiver mais confortável inspecionando JSON bruto, poderá usar outras ferramentas como jq para manipular a saída do Docker mais diretamente. Isso pode ser útil quando você deseja criar consultas mais avançadas do que os modelos Cross sozinhos podem fornecer.

docker check up on produz JSON por padrão para que sua saída possa ser canalizada diretamente para jq:

~$ docker check up on 94a8d1315315 | jq .[0].Config.Cmd
[
  "caddy",
  "run",
  "--config",
  "/etc/caddy/Caddyfile",
  "--adapter",
  "caddyfile"
]

A saída de outros comandos deve ser convertida em seu JSON bruto com --format antes de ser passado para jq:

~$ docker pictures --format 'json .' | jq .Measurement
"968MB"
"946MB"
"40.1MB"

Jq fornece sua própria sintaxe para selecionar, manipular e formatar dados JSON. Os fundamentos são semelhantes aos espaços reservados de modelo do Cross. Os campos são referenciados usando o .Box sintaxe. Há suporte para selecionar elementos de matriz usando o .[index] notação.

Conclusão

A CLI do Docker se torna mais poderosa quando você pode visualizar e manipular seletivamente os dados de saída. Vá modelos com o --format sinalizador fornecem uma maneira de criar interfaces personalizadas que agilizam o gerenciamento de seus contêineres.

Em algumas situações, --format ainda pode não oferecer o poder e a flexibilidade de que você precisa. Encaminhando comandos do Docker para ferramentas externas como jq fornece outra maneira de interrogar rapidamente sua instalação e exibir seus dados em outros sistemas.



Fonte da Notícia: www.howtogeek.com

Artigos relacionados

Botão Voltar ao topo