Remover imagens Docker com TAG

Primeiro vamos fazer uma pesquisa sobre nossas imagens usando: docker images -a

Podemos notar que aparecem diversas imagens com a TAG <none> e podendo ocupar espaços consideráveis. Porém alguma dessas imagens sem TAG são imagens usadas por outras imagens e removê-las pode nos fazer perder um certo tempo, mesmo assim é possível removê-las também, mas veremos mais adiante.

Para pesquisarmos somente as imagens que não estão sendo usadas, usamos o comando: docker images -a –filter “dangling=true” -q –no-trunc

Essas imagens podemos ser removidas sem medo, então usaremos o comando abaixo:
Para remover todas as imagens antigas e não usadas podemos usar o comando abaixo, porém muito cuidado ao usá-lo

Exemplos de uso do comando ping

Segundo o Wikipédia ping é …

Ping ou latência como podemos chamar, é um utilitário que usa o protocolo ICMP para testar a conectividade entre equipamentos. É um comando disponível praticamente em todos os sistemas operacionais. Seu funcionamento consiste no envio de pacotes para o equipamento de destino e na “escuta” das respostas. Se o equipamento de destino estiver ativo, uma “resposta” (o “pong”, uma analogia ao famoso jogo de ping-pong) é devolvida ao computador solicitante. ”

Sabendo dessa teoria agora vamos a alguns exemplos:

Exemplo 1: Aumentar ou diminuir o intervalo de tempo entre os pacotes enviados. O ping abaixo esperará cinco segundos antes de enviar o próximo pacote:

E para diminuir o intervalo de tempo:

Exemplo 2: Verificar se a interface está ativa. Por exemplo:

Quando obtiver um tempo de resposta é por que a interface está comunicando, caso contrário irá exibir alguma mensagem de erro:

Exemplo 3: Envie N pacotes e pare. No Linux e outras espécies Unix, o comando ping não termina até que você pressione Ctrl + C, para enviar um certo número de pacotes usamos o argumento -c. Vamos testar enviando 2 pacotes:

Exemplo 4: ping com áudio, envia um beep a cada ping com sucesso

Exemplo 5: “Inundar” a rede. Dísponivel somente para superusuários, envia cem ou mais pacotes por segundo, imprimindo um ponto por cada pacote enviado e um espaço quando recebido.

Exemplo 6: Encontrar o endereço IP de um domínio. Quando um ping é disparado em um nome domínio, antes do envio dos pacotes o comando escreve a saída padrão entre parênteses, depois do nome de domínio, o IP do mesmo.

Exemplo 7: Mostrar apenas as estatísticas do comando. No final do comando é mostrado estatísticas como quantidade de pacotes transmitidos, recebidos, porcentagem de pacotes perdidos e tempo. Se queremos ver somente as estatísticas sem observar cada linha de pacote enviado podemos utilizar a opção -q (quiet).

Exemplo 8: Modificar o tamanho do pacote. Por padrão o tamanho do pacote do ping fica entre 56 a 100 bytes. Se utiliza o tamanho do pacote 100, verá ‘128 bytes’, isto se deve a que 28 bytes é o tamanho do cabeçalho do ping.

Exemplo 9: Especificar o tempo. O parâmetro -w especifica o tempo limite para terminar o ping. Por exemplo -w 5, o comando ping terminará após os cinco segundos, independentemente quantos pacotes foram enviados e recebidos.

Exemplo 10: Ping online. Existem páginas como Ping.eu que nos permitem realizar um ping de diferentes localizações para nosso servidor.

Exemplo 11: Estatísticas parciais sem sair. Ao invez de apertar Ctrl+C para terminar (SIGQUIT) o comando ping, podemos utilizar Ctrl+I para mostrar estatísticas parciais e continuar o envio de pacotes.

Iniciando com MongoDB

Após termos realizado a instalação do MongoDB nesse post, hoje vamos iniciar com os primeiros passos com nosso banco de dados.

Utilizando o Mongo Shell

Quando estamos utilizando o mongo em localhost (127.0.0.1) não é necessário usuário e senha para realizar a conexão.

Primeiro comando a ser usado é o use, utilizado para selecionar o banco usado.

Método insert( ) para armazenar um documento contendo as chaves “name” e “idade”. As informações são armazenadas na estrutura, chave/valor, similar ao JSON.

No comando db.usuarios.insert, esse usuários corresponde a uma coleção, e ela não precisa de uma estrutura definida, podendo ser dinâmica caso haja necessidade. Podemos usar o comando abaixo sem alterar nenhum tipo de definição de estrutura que o insert irá funcionar normalmente.

Use o método find( ) para visualizar os documentos inseridos. Vamos buscar o que foi salvo na coleção usuarios:

Essa pesquisa também pode ser aprofundada, por exemplo pesquisando só quem está na cidade “Sapiranga”

E para sairmos do nosso shell basta executar o comando:

Para o início está de bom tamanho, até a próxima.

Instalando MongoDB Community Edition 4.0 no Ubuntu

O que é MongoDB

O MongoDB é um banco de dados NoSQL orientado a documentos de alto desempenho (sistema noSQL significa que ele não fornece tabelas, linhas, etc.). Ele armazena dados em documentos semelhantes a JSON com esquemas dinâmicos para melhor desempenho.

Adicionando repositórios

Para instalar MongoDB Community Edition no Ubuntu, precisamos primeiro importar a chave pública usada pelo gerenciador de pacotes.

No Ubuntu 18.04

No Ubuntu 16.04

No Ubuntu 14.04

Instalando o pacote

Habilitando e iniciando serviço

E pronto já podemos usar no mongo, lembrando que é necessário liberar a porta 27017 no firewall caso o mesmo esteja habilitado. Nos próximos posts falaremos um pouco mais sobre o mongo.

Instalando última versão do Ansible no Ubuntu/Debian

Caso não saiba o que é Ansible, pode dar uma lida nesse post.

A forma mais simples para instalar o Ansible é com o comando abaixo, porém é instalado uma versão mais antiga.

Agora para baixar uma versão mais atualizada basta seguir os passos abaixo:

 

Identificar sistema operacional com ping

O comando ping utiliza o protocolo icmp e é muito útil para alguns testes de rede. O que pouca gente sabe é que durante a resposta do comando ping, uma informação pode nos informar qual o sistema operacional está respondendo. Essa informação é TTL (Time to Live).

Ex:

Podemos ver que nesse exemplo o TTL é 64 que corresponde ao Linux. É bom lembrar que cada vez que um pacote passa por um roteador é reduzido um do valor TTL. Caso a resposta seja 64, significa que o pacote veio de um Linux e passou por 2 roteadores.

Unix = 255
Linux = 64
Windows = 128

Limpar container antigos Docker

Caso sua lista de container esteja muito grande e queira remover alguns containers do seu host, podemos usar o comando abaixo para remover container parados a mais tempo:

Explicando:

docker ps –filter “status=exited” = Lista somente os containers parados, que não estão em execução

grep ‘weeks ago’ = Filtra por containers criados a semanas atrás

awk ‘{print $1}’ = Exibe a primeira coluna, que refere ao CONTAINER ID

xargs –no-run-if-empty docker rm = Pega o que foi filtrado até agora e joga como parâmetro para o docker rm

Sempre use os comandos com muito cuidado caso não tenha certeza do que está fazendo, não me responsabilizo por qualquer erro humano 🙂

Convertendo arquivos DOS ^M com Vim

Quem nunca passou pela situação de executar um script e o mesmo apresentar erro. Normal, mas algumas vezes o erro ocorre pela formatação, principalmente se foi escrito ou salvo em um Windows. Ocorre de no final de cada linha ele acrescentar um ^M, o que não o Linux não consegue interpretar.

Existem algumas formas de corrigir esse problema, a mais conhecida é usando o aplicativo dos2unix.

Mas o quero apresentar hoje é usando o poderoso Vim. Basta estando dentro do arquivo digitar o comando abaixo:

Simples e rápido, caso por algum motivo queira fazer o processo contrário, basta executar:

Comando fuser – Quem mexeu no meu arquivo

O fuser é um programa que permite que saibamos qual processo está utilizando determinado arquivo, socket (portas) e sistema de arquivos especificado. Aprender sua manipulação é essencial para poder administrar um servidor para saber o que está acontecendo principalmente nas conexões. É um comando extremamente flexível, vamos ver suas opções e seu uso.

Diretiva Descrição Exemplo
-a, –all Mostra todos os arquivos, inclusive os que estão sem uso # fuser -a *
-k, –kill Desativa/Mata os processos que estão utilizando determinado arquivo # fuser -k /home/zonebin
-i, –interactive Pede confirmação sempre que for matar um processo utilizando um arquivo # fuser -ik /home/zonebin
-m, –mount Especifica um sistema de arquivos para descobrir qual processo está sendo utilizado # fuser -m /dev/sda1
-s, –silent Realiza as operações indicadas silenciosamente, não use a opção -a, -u, -v # fuser -ks /home
-u, –user Mostra o nome de usuário que iniciou o processo que está utilizando o arquivo # fuser -u /var/log/messages
-4, –ipv4 Mostra processos de IPV4 somente # fuser -4 ssh/tcp -6,
-ipv6 Mostra somente processos de sockets IPV6 # fuser -6 25/tcp

Tipos de acesso:
c  Diretório atual
e  Arquivo executável rodando
f  Arquivo aberto (omitido no modo de display padrão)
F  arquivo aberto para escrita (omitido no modo de display padrão)
r  Diretório root
m  Arquivo mapeado ou biblioteca compartilhada

Exemplos:
Mostrar os processos em execução no diretório atual:

Verificando se está sendo usado socket TCP ou UDP, como a porta 22 (SSH):
Para mais informações:

Iniciando Zabbix com Docker Compose

Obviamente precisaremos ter instalado o docker e docker-compose, caso não saiba como instalar pode acessar o link e esse outro link . Precisaremos criar um arquivo docker-compose.yml com o seguinte conteúdo:

E iremos executar o seguinte comando:

Caso queiram contribuir segue o github desse código: https://github.com/sidneiweber/zabbix-docker