- Buscar informações containers em execução
- Executar processos adicionais em containers ativos
- Mapear volumes locais aos containers
- Mapear rede aos containers
Para as tarefas seguintes execute o comando abaixo:
docker run -d busybox /bin/sh -c "while true; do echo Hello from Linux container [\$HOSTNAME];sleep 1;done"
docker run -d busybox /bin/sh -c "while true; do echo Hello from Linux container [\$HOSTNAME];sleep 2;done"
docker run -d busybox /bin/sh -c "while true; do echo Hello from Linux container [\$HOSTNAME];sleep 3;done"
Ou se preferir, execute tudo em um único comando:
for i in `seq 3`; do docker run -d busybox /bin/sh -c "while true; do echo Hello from Linux container [\$HOSTNAME];sleep $i;done"; done
Para buscar mais informações sobre os containers em execução, usa-se:
# docker ps
No exemplo anterior não são listados containers terminados. Para visualizar a listagem completa, usa-se:
# docker ps -a
Para visualizar os processos em execução dentro de um container, usamos:
# docker top <id/nome>
Também podemos inspecionar os metadados do container, ou de uma imagem, através de:
# docker inspect <id/nome/tag>
Tente obter o endereço IP de um container usando o comando abaixo:
docker inspect --format '{{ .NetworkSettings.IPAddress }}' <id do container>
Também podemos conectar em um container em execução e executar processos adicionais usando:
# docker exec -it <container-id> /bin/sh
Containers são essencialmente efêmeros. Entretanto, podemos mapear diretórios a eles e ter mecanismos de persistência de dados. Esse mecanismo é usado através do comando:
# docker run -it -v /tmp/:/tmp_from_host:z centos:7
/tmp
: diretório no FS do Host
/tmp_from_host
: volume mapeado dentro do container
z
: em sistemas com SELinux habilitado, indica que conteúdo do volume pode ser compartilhado por múltiplos containerspara mais detlahes sobre o volumes no Docker veja: https://docs.docker.com/engine/admin/volumes/volumes/
No exemplo acima, o diretório /tmp/host do container será mapeado para o diretório /tmp no host hospedeiro
Por padrão, os containers utilizam de redes privadas locais no host hospedeiro. Dessa forma se faz necessário usar mapeamento de portas para expor serviços de rede, como uma aplicação web:
# docker run -it -p 8080:80 httpd
No exemplo acima, a porta 80 do container (httpd) será exposta na porta 8080 do host hospedeiro
para se certificar disso use o comando abaixo:
docker port <id do conatiner httpd>
execute o teste abaixo tentando acessr a porta 8080
a partir do host (fora do container):
curl http://localhost:8080
Ao invés de mapear manualmente, podemos usar portas aleatórias:
# docker run -it -P httpd
Para monitorar a quantidade de recursos que um container está consumindo em um host, podemos executar o comando
docker stats
E podemos visualizar somente de um container rodando o comando
docker stats <id do container>