Se você usa Docker, provavelmente o terceiro comando que aprendeu foi listar eles, mas você sabe que dá pra tunar a listagem de containers?
Pois bem, a colinha de hoje é para mostrar dois truques que eu uso muito:
- filtragem da lista;
- formatação da lista.
Vamos ver esses dois casos com carinho.
Filtrando a lista de containers
Acho que o primeiro comando “mais avançado” que eu tive que fazer foi filtrar um conjunto de containers. Logo ao começar a mexer com Docker é muito comum ficar com o ambiente “sujo”, ou seja, ter muitos containers com status de exited parados sem serem removidos.
Por isso, eu aprendi a filtrar tais containers pelo status. Dentro do comando tradicional de listar containers (docker ps), existe uma flag chamada de --filter ou -f. Essa flag permite que você indique filtros a serem feitos, por exemplo:
|
O resultado desse comando vai ser uma lista de containers que deixaram de executar, mas não foram removidos. Como eu falei antes, é bem fácil perder o controle e ter muitos containers parados “sujando” o seu ambiente. Então listar aqueles que não estão em execução pode ser uma mão na roda para remover eles mais facilmente. Eu gosto de usar esse comando assim:
|
Passando a flag -q faz com que o resultado do docker ps mostre apenas os IDs dos containers. Colocando esse comando completo dentro do $(), a gente passa essa lista de IDs pro docker rm, que remove todos os containers parados com um comando só e imprime o ID de cada um. Ah, e a flag -v ali também remove os volumes anônimos associados a esses containers.
Formatando a lista de containers
Além de remover os containers que ficam sujando nosso ambiente, às vezes eu preciso de algumas informações sobre algum dos containers que estão rodando. Normalmente quando usamos o docker ps vemos informações como ID do container, o comando que você rodou para iniciar ele, a imagem que está sendo usada e outras coisas mais… Mas às vezes ver todas essas informações na tela pode ser uma sobrecarga de informações.
Aí que entra a mágica de formatar o resultado do docker ps. A flag --format que comanda o show dessa vez. Ela aceita um template Go. Se você não conhece templates Go, aqui vai uma explicação super rápida e superficial: um template Go é uma string que é “preenchida” com informações guardadas em variáveis.
Por exemplo, o template:
poderia ser preenchido com qualquer nome que estivesse contido na variável Name. Para identificar variáveis em templates basta encontrar a palavra precedida por um ponto e dentro de chaves duplas. Se quiser saber mais sobre templates Go dá uma olhada nesse artigo do grupo de estudos que fala muito bem sobre o tema.
Então, pra começar cada uma das informações que aparecem na tela você pode chamar seguindo esse mapa:
| Informação | Variável |
|---|---|
CONTAINER ID | ID |
IMAGE | Image |
COMMAND | Command |
CREATED | RunningFor |
Status | Status |
PORTS | Ports |
NAMES | Names |
Como eu geralmente só quero ver o nome, a imagem e o ID dos containers que estão rodando, meu comando acaba sendo esse:
Que me dá um resultado assim:
|
|
Legal né? E aí, você já listou os seus containers hoje?