Neste artigo vou abordar o que eu aprendi sobre Containers Docker, de uma forma pratica.
Para utilização do Docker é necessário conhecer alguns comandos e entender de forma clara e direta para que servem, assim como alguns exemplos de uso.
Como executar um container
Para iniciar um container é necessário saber a partir de qual imagem será executado. Para listar as imagens que seu Docker host tem localmente, execute o comando abaixo:
Atenção: se a imagem não estiver em sua maquina local, o Docker irá baixar automaticamente.
docker container run <parâmetros> <imagem:tag> <CMD> <argumentos>
#ou
docker run <parâmetros> <imagem> <CMD> <argumentos>
Os parâmetros mais utilizados na execução de containers são:
Parâmetro | Explicação |
---|---|
-d | Execução do container em background |
-i | Modo interativo. Mantém o STDIN aberto mesmo sem console anexado |
-t | Aloca uma pseudo TTY |
--rm | Remove automaticamente o container após finalização, pode ser chamado de modo cleanup (Não funciona com -d) |
--name | Nomear o container |
-v | Mapeamento de volume |
-p | Mapeamento de porta |
-m | Limitar o uso de memória RAM |
-c | Balancear o uso de CPU |
Segue um exemplo simples do seguinte comando:
docker run -it --rm --name meu_python python bash
De acordo com o comando acima, será iniciado um container com o nome meu_python, criado a partir da imagem python e o processo executado nesse container será o bash.
Vale lembrar que, caso o CMD não seja especificado no comando docker container run, é utilizado o valor padrão definido no Dockerfile da imagem utilizada. No nosso caso é python e seu comando padrão executa o binário python, ou seja, se não fosse especificado o bash, no final do comando de exemplo acima, ao invés de um shell bash do GNU/Linux, seria exibido um shell do python.
Como renomear um container
docker rename CONTAINER NEW_NAME
Como listar containers
Esse comando é responsável por mostrar todos os containers, mesmo aqueles não mais em execução.
docker container ls <parâmetros>
#ou
docker ps
Parâmetro | Explicação |
---|---|
-a | Lista todos os containers, inclusive os desligados |
-l | Lista os últimos containers, inclusive os desligados |
-n | Lista os últimos N containers, inclusive os desligados |
-q | Lista apenas os ids dos containers, ótimo para utilização em scripts |
Gerenciar containers
Para iniciar, reiniciar, pausar, resumir e parar um container execute o comando abaixo
docker container <COMANDO> <CONTAINER ID || NAME>
#ou
docker <COMANDO> <CONTAINER ID || NAME>
Comandos | Explicação |
---|---|
restart | Reinicia um container |
pause | Pausa a execução do container |
unpause | Tira o container do modo pausa |
stop | Encerra a execução do container |
rm | Apaga um container |
rm -f | Apaga um container ativo |
Como retomar o acesso a um container interativo rodando em segundo plano
Entrar no modo interativo com container ativo
docker container attach <CONTAINER ID || NAMES>
#ou
docker attach <CONTAINER ID || NAMES>
Para sair do modo interativo, digite exit
Para sair do container mas mante-lo em execução tecle ctrl + pq
Como apagar containers que não estão sendo utilizados
Remove todos os containers inativos do seu computador
docker container prune
Vale ressaltar que a ideia dos containers é a de serem descartáveis. Caso você use o mesmo container por muito tempo sem descartá-lo, provavelmente está usando o Docker incorretamente. O Docker não é uma máquina, é um processo em execução. E, como todo processo, deve ser descartado para que outro possa tomar seu lugar na reinicialização do mesmo.
Como motirar os processos dentro de um container
O comando top
, assim como nos terminais linux, traz as informações sobre os processos que estão sendo rodados, mas dentro do container, o que não inclui, por exemplo, serviços que são compartilhados com o sistema hospedeiro. Ele é útil para quando estamos rodando containers em segundo plano
docker container top <CONTAINER ID || NAMES>
Dica para monitorar containers
Instale o ctop para monitorar e manipular todos os containers em sua maquina
Para utilizar basta digitar ctop
em seu terminal.
Top comments (0)