Docker ContainersPermalink
Parte da administração de TI, envolve saber como obter métricas de utilização dos recursos.
Com docker não seria diferente, tanto que a própria CLI já disponibiliza comandos interessantes como docker info, docker ps, docker stats
.
Docker InfoPermalink
O docker info
exibe informações gerais do sistema, como detalhes do host, Containers (criados, em execução, em pausa, parados), imagens, versão do cliente e servidor, storage, plugins, kernel, SO, arquitetura, registries, etc.
Detalhes podem ser visto na documentação oficial: https://docs.docker.com/engine/reference/commandline/info/
$ docker info
Client:
Debug Mode: false
Server:
Containers: 14
Running: 3
Paused: 1
Stopped: 10
Images: 52
Server Version: 1.10.3
Storage Driver: devicemapper
Pool Name: docker-202:2-25583803-pool
Pool Blocksize: 65.54 kB
Base Device Size: 10.74 GB
Backing Filesystem: xfs
Data file: /dev/loop0
Metadata file: /dev/loop1
Data Space Used: 1.68 GB
Data Space Total: 107.4 GB
Data Space Available: 7.548 GB
Metadata Space Used: 2.322 MB
Metadata Space Total: 2.147 GB
Metadata Space Available: 2.145 GB
Udev Sync Supported: true
Deferred Removal Enabled: false
Deferred Deletion Enabled: false
Deferred Deleted Device Count: 0
Data loop file: /var/lib/docker/devicemapper/devicemapper/data
Metadata loop file: /var/lib/docker/devicemapper/devicemapper/metadata
Library Version: 1.02.107-RHEL7 (2015-12-01)
Execution Driver: native-0.2
Logging Driver: json-file
Plugins:
Volume: local
Network: null host bridge
Kernel Version: 3.10.0-327.el7.x86_64
Operating System: Red Hat Enterprise Linux Server 7.2 (Maipo)
OSType: linux
Architecture: x86_64
CPUs: 1
Total Memory: 991.7 MiB
Name: ip-172-30-0-91.ec2.internal
ID: I54V:OLXT:HVMM:TPKO:JPHQ:CQCD:JNLC:O3BZ:4ZVJ:43XJ:PFHZ:6N2S
Docker Root Dir: /var/lib/docker
Debug Mode: false
Username: gordontheturtle
Registry: https://index.docker.io/v1/
Insecure registries:
myinsecurehost:5000
127.0.0.0/8
Docker PSPermalink
O docker ps
exibe os containers que foram executados ou estão em execução, alguns filtros comuns são docker ps
e docker ps -a
.
Containers em execuçãoPermalink
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c5a675bae310 dotnetapp:latest "/bin/sh -c 'set ASP…" 44 minutes ago Up 44 minutes 0.0.0.0:85->80/tcp goofy_ptolemy
43e87fb642cd dotnetapp:latest "/bin/sh -c 'set ASP…" 44 minutes ago Up 44 minutes 0.0.0.0:84->80/tcp quirky_kare
20c9d631a656 dotnetapp:latest "/bin/sh -c 'set ASP…" 44 minutes ago Up 44 minutes 0.0.0.0:83->80/tcp compassionate_elbakyan
9780a8fbe01a dotnetapp:latest "/bin/sh -c 'set ASP…" 44 minutes ago Up 44 minutes 0.0.0.0:82->80/tcp fervent_bardeen
c4c270bd00ec dotnetapp:latest "/bin/sh -c 'set ASP…" 44 minutes ago Up 44 minutes 0.0.0.0:81->80/tcp stoic_spence
6db1edb539c8 mlcanhoto:latest "/bin/sh -c 'python …" 2 weeks ago Up 2 weeks 0.0.0.0:8443->8443/tcp suspicious_lovelace
Todos os containers, inclusive os paradosPermalink
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
65a263e3ec8a dotnetapp:latest "/bin/sh -c 'set ASP…" 4 seconds ago Up 3 seconds 0.0.0.0:84->80/tcp hopeful_ardinghelli
c5a675bae310 dotnetapp:latest "/bin/sh -c 'set ASP…" 45 minutes ago Exited (134) Less than a second ago goofy_ptolemy
43e87fb642cd dotnetapp:latest "/bin/sh -c 'set ASP…" 45 minutes ago Exited (134) 4 seconds ago quirky_kare
20c9d631a656 dotnetapp:latest "/bin/sh -c 'set ASP…" 45 minutes ago Exited (134) 1 second ago compassionate_elbakyan
9780a8fbe01a dotnetapp:latest "/bin/sh -c 'set ASP…" 45 minutes ago Up 45 minutes 0.0.0.0:82->80/tcp fervent_bardeen
c4c270bd00ec dotnetapp:latest "/bin/sh -c 'set ASP…" 45 minutes ago Exited (134) 2 seconds ago stoic_spence
6db1edb539c8 mlcanhoto:latest "/bin/sh -c 'python …" 2 weeks ago Up 2 weeks 0.0.0.0:8443->8443/tcp suspicious_lovelace
FiltrosPermalink
Existem situações que filtros nos ajudam muito para identificar informações chaves referentes aos containers, para tanto, o comando possui uma flag --format
que te permite adaptar e filtrar a saída de acordo com a sua necessidade.
No exemplo abaixo, eu utilizei a opção --format
para me exibir o Container ID, a Imagem e o tempo de execução dos containers:
$ docker ps --format "table {{.ID}}\t{{.Image}}\t{{.RunningFor}}"
CONTAINER ID IMAGE CREATED
c5a675bae310 dotnetapp:latest 11 minutes ago
43e87fb642cd dotnetapp:latest 11 minutes ago
20c9d631a656 dotnetapp:latest 11 minutes ago
9780a8fbe01a dotnetapp:latest 11 minutes ago
c4c270bd00ec dotnetapp:latest 11 minutes ago
6db1edb539c8 mlcanhoto:latest 2 weeks ago
Documentação oficial:Permalink
https://docs.docker.com/engine/reference/commandline/ps/#formatting
Docker StatsPermalink
O docker stats
por sua vez, mostra consumo de recurso de cada container.
Nota: Um parâmetro interessante é o
--no-stream
que exibe o consumo atual no momento da execução, se o parâmetro não for fornecido, ele é atulizado em tempo real.
$ docker stats --no-stream
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
c5a675bae310 goofy_ptolemy 0.27% 240.3MiB / 7.503GiB 3.13% 63.1MB / 1.07MB 0B / 0B 0
43e87fb642cd quirky_kare 0.03% 251.8MiB / 7.503GiB 3.28% 89.1MB / 1.18MB 0B / 0B 0
20c9d631a656 compassionate_elbakyan 0.02% 189.1MiB / 7.503GiB 2.46% 52.3MB / 1.06MB 0B / 0B 0
9780a8fbe01a fervent_bardeen 0.03% 172.1MiB / 7.503GiB 2.24% 22.1MB / 981kB 0B / 0B 0
c4c270bd00ec stoic_spence 1.18% 180.2MiB / 7.503GiB 2.35% 42.4MB / 974kB 0B / 0B 0
6db1edb539c8 suspicious_lovelace 0.60% 2.107GiB / 7.503GiB 28.08% 151MB / 191MB 11.3MB / 0B 0
Neste exemplo, eu consigo observar alguns valores e remover outros. Utilizando alguns parâmetros.
$ docker stats --no-stream --format "table {{.Container}}\t{{.CPUPerc}}\t{{.MemPerc}}\t{{.NetIO}}\t{{.BlockIO}}"
CONTAINER CPU % MEM % NET I/O BLOCK I/O
c5a675bae310 0.02% 1.94% 16.8MB / 195kB 0B / 0B
43e87fb642cd 0.02% 2.11% 30.5MB / 214kB 0B / 0B
20c9d631a656 0.02% 1.90% 15.3MB / 192kB 0B / 0B
9780a8fbe01a 0.02% 1.64% 8.45MB / 195kB 0B / 0B
c4c270bd00ec 0.02% 1.79% 15.2MB / 102kB 0B / 0B
6db1edb539c8 0.61% 28.08% 151MB / 191MB 11.3MB / 0B
Documentação oficial:Permalink
https://docs.docker.com/engine/reference/commandline/stats/#formatting