Dicas, Docker, Linux

Comandos Docker: torne sua CLI mais fácil e ágil

Tips & Tricks SeriesApós trabalhar um tempo com Docker na linha de comando você percebe que alguns comandos são muito repetitivos e um tanto chatos. Apesar de o cliente de linha de comando do Docker ser extremamente poderoso, existe uma infinidade de parâmetros e combinações para se lembrar.

Em um ambiente Unix-like (*-Linux, Mac, etc) é possível tornar algumas tarefas repetitivas um pouco mais ágil e divertida. Veja como é possível definir algumas variantes dos comandos Docker mais comuns: docker run, docker psdocker images, docker inspect, docker exec, e assim por diante…

É possível definir novos comandos e expor em seu profile shell utilizando aliases e functions via Linux Shell. Veja alguns que defini em meu ~/.bash_profile (pode ser o ~/.bashrc também!):

NOTA: após editar e salvar o arquivo execute ‘source ~/.bash_profile’ para carregar as novas definições em sua shell.

Nas duas primeiras linhas defini dois alias:

  • di: listar as imagens em meu repositório local; e
  • dps: listar todos os containers criados

Em seguida defino algumas funções que utilizam sub-comandos e combinações de parâmetros um pouco mais elaborados:

  • dock-run <nome ou id da imagem>: cria um container utilizando a imagem informada
  • dock-exec <nome ou id do container>: executa o shel (/bin/sh) do container informado. Equivalente ao docker attach
  • dock-ip <nome ou id do container>: obtém o endereço ip do container
  • dock-rmc: remove todos os containers inativos (com status exited)
  • dock-rmi: remove todas as imagens com id ‘none

Espero que essa dica seja útil pra vocês também!

Compartilhe seus comandos também comentando abaixo 😉

Anúncios
Containers, Dicas, Docker, Geral

Como me mantenho atualizado sobre a onda Containers, Docker e afins…

Olá!realcontainers

Neste post quero compartilhar algumas referências que venho utilizando para, não apenas aprender, mas principalmente me manter atualizado sobre o tópico Containers, Docker, Kubernetes (orquestração) e afins…

Como tudo tem um início, segue alguns links interessantes pra quem está començando no assunto. O site opensource.com é uma excelente fonte pois reúne o que há de mais relevante no mundo Open Source. Abaixo alguns artigos para conhecer Docker:

opensourceblog

 

O Site CenturyLink Labs também disponibiliza artigos exelentes escritos pelos principais especialistas no assunto.centurylink labs

Para quem está interessando em desenvolver aplicações nesse novo paradigma de Cloud e Containers sugiro seguir o Blog do Arun Gupta: http://blog.arungupta.me/

Arun Gupta weblog

Arun é um dos vários evangelistas Red Hat que escreve  sobre JavaEE, Docker, Containers, Microservices e demais soluções Red Hat JBoss Enterprise Middleware

Após conhecer esse novo mundo , sugiro assinar essas duas Newsletter

Alguns perfis que vale a pena seguir no Twitter_logo:

Para uma abordagem Corporativa do uso de Containers veja:

red hat containers

Docker, Linux

Excluindo uma tag de um repositório Docker em um registro remoto

Quando voce publica uma imagem Docker em algum repositório remoto (privado ou público) não é possível excluir uma tag da imagem utilizando o cliente docker na linha de comando.

docker rmi <id da imagem>

isso removerá apenas do seu registro local.

Para remover do registro público é necessário utilizar a API REST [1] do serviço de registro do docker.

De acordo com a documentação da API Docker Registry [2] o endpoint é o seguinte:

DELETE /v1/repositories/(namespace)/(repository)/tags/(tag*)

Exemplo:

DELETE /v1/repositories/reynholm/help-system-server/tags/latest HTTP/1.1
Host: registry-1.docker.io
Accept: application/json
Content-Type: application/json
Cookie: (Cookie provided by the Registry)

Exemplo que usei no meu caso:

[root@rhel7-server-1 httpd]# curl -X DELETE my-private-docker-registry.com:5000/v1/repositories/rsoares/rhel7/tags/latest
true

Pronto!

Se o retorno for ‘true‘ sua tag foi removida!

Execute novamente a requisição REST para se certificar

curl -X DELETE my-private-docker-registry.com:5000/v1/repositories/rsoares/rhel7/tags/latest
{"error": "Tag not found"}

Observe o retorno:

{"error": "Tag not found"}

[1] https://docs.docker.com/reference/api/registry_api
[2] https://docs.docker.com/reference/api/registry_api/#delete-a-repository-tag