Visualizando comandos de containers Docker em execução
Existem várias formas de verificar qual comando foi utilizdao para iniciar um container Docker que já está em execução. A seguir, apresento os principais métodos disponíveis.
Utilizando o comando docker ps
O comando docker ps exibe os containers que estão atualmente em execução. Para visualizar informações detalhadas sobre o comando utilizado, você pode utilizar flags adicionais.
Para ver o comando completo sem truncation:
docker ps -a --no-trunc | grep nome_do_container
A flag --no-trunc impede que o Docker corte a exibição do comando, mostrando a instrução completa utilizada na inicialização do container.
Utilizando o comando docker inspect
O comando docker inspect fornece informações detalhadas sobre um container específico em formato JSON. Todas as configurações e parâmetros do container podem ser extraídos desse arquivo JSON.
Sintaxe básica:
docker inspect <nome_ou_id_do_container>
Exemplo prático
[root@servidor ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
547880f43cf1 mysql:8.0.31 "docker-entrypoint.s…" 15 minutos atrás Up 15 minutos 33060/tcp, 0.0.0.0:3301->3306/tcp, :::3301->3306/tcp mysql-8.0.31
e02f22dc442c mysql:5.7 "docker-entrypoint.s…" 25 horas atrás Up 18 minutos 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp mysql
[root@servidor ~]# docker ps -a --no-trunc | grep 547880f43cf1
547880f43cf176d2a826ae26f9f04bbe637ca56ec5d92df25a78d24ec23ed232 mysql:8.0.31 "docker-entrypoint.sh mysqld" 15 minutos atrás Up 15 minutos 33060/tcp, 0.0.0.0:3301->3306/tcp, :::3301->3306/tcp mysql-8.0.31
[root@servidor ~]# docker inspect 547880f43cf1
O comando docker inspect retorna um JSON completo contendo todas as informações do container, incluindo:
- Path: O executável principal do container
- Args: Os argumentos passados para o executável
- Config: Configurações de ambiente, variáveis, portas expostas
- Mounts: Volumes montados no container
- HostConfig: Configurações de rede, binds, políticas de reinício
- NetworkSettings: Configurações de rede e IP
Extraindo campos específicos
O Docker permite utilizar a flag --format para extrair campos específicos do JSON retornado pelo inspect. Essa funcionalidade utiliza a sintaxe de templates do Go.
Exemplos de extração de campos:
docker inspect --format='{{.NetworkSettings.Networks.bridge.IPAddress}}' <container>
docker inspect --format='{{.Mounts}}' <container>
docker inspect --format='{{.HostConfig.Binds}}' <container>
docker inspect --format='{{.HostConfig.PortBindings}}' <container>
Exemplo de uso prático
[root@servidor ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
547880f43cf1 mysql:8.0.31 "docker-entrypoint.s…" 18 minutos atrás Up 18 minutos 33060/tcp, 0.0.0.0:3301->3306/tcp, :::3301->3306/tcp mysql-8.0.31
e02f22dc442c mysql:5.7 "docker-entrypoint.s…" 25 horas atrás Up 22 minutos 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp mysql
[root@servidor ~]# docker inspect --format='{{.Mounts}}' 547880f43cf1
[{bind /mydata/mysql-8.0.31/log /var/log/mysql true rprivate} {bind /mydata/mysql-8.0.31/data /var/lib/mysql true rprivate}]
[root@servidor ~]# docker inspect --format='{{.NetworkSettings.Networks.bridge.IPAddress}}' 547880f43cf1
172.17.0.2
[root@servidor ~]# docker inspect --format='{{.HostConfig.Binds}}' 547880f43cf1
[/mydata/mysql-8.0.31/log:/var/log/mysql /mydata/mysql-8.0.31/data:/var/lib/mysql]
[root@servidor ~]# docker inspect --format='{{.HostConfig.PortBindings}}' 547880f43cf1
map[3306/tcp:[{ 3301}]]
Esses comandos são extremamente úteis para automatização e criação de scripts, permitindo extrair informações específicas dos containers sem precisar analisra manualmente todo o JSON retornado.