Header Ads Widget

Ticker

6/recent/ticker-posts

Supervisión de contenedores de Docker

 


Este tutorial se centrará en ver qué sucede dentro de los contenedores que está ejecutando. Hay varios comandos ventana acoplable que hacer esto con los más comunes son el cargador de muelle superior del recipiente , contenedor ventana acoplable inspeccionar , y las estadísticas de contenedores ventana acoplable . El comando superior es una lista de procesos en un contenedor. El comando inspeccionar es bastante interesante ya que proporciona los detalles de cómo se inició un contenedor y cómo está configurado. El comando stats se puede usar para ver todas las estadísticas del contenedor en ejecución o una a la vez en una salida de flujo en tiempo real a la terminal. Veamos algunos de estos comandos en acción.


Girando un par de contenedores

Para probar los comandos de monitoreo para los contenedores de la ventana acoplable, primero, necesitamos activar algunos contenedores para trabajar. Hemos visto cómo ejecutar varios contenedores, así que mencionemos un par de nuevo. Podemos lanzar un contenedor Nginx, un contenedor MySQL y luego listarlos en su estado de ejecución.

$ contenedor docker ejecutar -d --name nginx nginx
d4f849b858a9df134f7f907c6e929c2ef1e89b86df8f851c8f209f6d6ac7a9e1

$ contenedor docker ejecutar -d --name mysql -e MYSQL_RANDOM_ROOT_PASSWORD = true mysql
e9263551f40fb30deb0b09434bf26697fce3eaf3370141d01c209d997c73885b

$ contenedor docker ls
ID DE CONTENEDOR COMANDO DE IMAGEN ESTADO CREADO NOMBRES DE PUERTOS
e9263551f40f mysql "docker-entrypoint.s…" Hace 26 segundos Hasta 25 segundos 3306 / tcp, 33060 / tcp mysql
d4f849b858a9 nginx "/docker-entrypoint.…" Hace 49 segundos Hasta 48 segundos 80 / tcp nginx

Parte superior del contenedor Docker

En Linux, el comando top se usa para mostrar los procesos de Linux. Proporciona una vista dinámica en tiempo real del sistema en ejecución. Podemos hacer algo similar en Docker.

$ contenedor docker top nginx
COMANDO DE TIEMPO DE USUARIO PID
1493 root 0:00 nginx: proceso maestro nginx -g daemon off;
1551101 0:00 nginx: proceso de trabajo

$ docker contenedor superior mysql
COMANDO DE TIEMPO DE USUARIO PID
1569999 0:01 mysqld

Inspección de contenedor Docker

El comando inspeccionar se puede ejecutar en una o más imágenes o contenedores. Se puede utilizar el nombre o la identificación para identificar una imagen o un contenedor. Aquí inspeccionamos el contenedor Nginx en nuestro entorno. La salida está en formato JSON y contiene literalmente todos los datos sobre cómo se inició el contenedor.

$ contenedor docker inspeccionar nginx
[
    {
        "Id": "d4f849b858a9df134f7f907c6e929c2ef1e89b86df8f851c8f209f6d6ac7a9e1",
        "Creado": "2020-10-01T14: 57: 13.6068591Z",
        "Ruta": "/docker-entrypoint.sh",
        "Args": [
            "nginx",
            "-gramo",
            "demonio apagado";
        ],
        "Estado": {
            "Estado": "en ejecución",
            "En ejecución": cierto,
            "Pausado": falso,
            "Reiniciando": falso,
            "OOMKilled": falso,
            "Muerto": falso,
            "Pid": 1493,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2020-10-01T14: 57: 14.3647252Z",
            "FinishedAt": "0001-01-01T00: 00: 00Z"
        },
        "Imagen": "sha256: 7e4d58f0e5f3b60077e9a5d96b4be1b974b5a484f54f9393000a99f3b6816e3d",
        "ResolvConfPath": "/var/lib/docker/containers/d4f849b858a9df134f7f907c6e929c2ef1e89b86df8f851c8f209f6d6ac7a9e1/resolv.conf",
        "HostnamePath": "/ var / lib / docker / containers / d4f849b858a9df134f7f907c6e929c2ef1e89b86df8f851c8f209f6d6ac7a9e1 / hostname",
        "HostsPath": "/ var / lib / docker / containers / d4f849b858a9df134f7f907c6e929c2ef1e89b86df8f851c8f209f6d6ac7a9e1 / hosts",
        "LogPath": "/var/lib/docker/containers/d4f849b858a9df134f7f907c6e929c2ef1e89b86df8f851c8f209f6d6ac7a9e1/d4f849b858a9df134f7f907c8f8a929a9c8f8f907c8f209f6d6ac7a9e1,
        "Nombre": "/ nginx",
        "RestartCount": 0,
        "Driver": "overlay2",
        "Plataforma": "linux",
        "MountLabel": "",
        "ProcessLabel": "",
        "AppArmorProfile": "",
        "ExecIDs": nulo,
        "HostConfig": {
            "Vincula": nulo,
            "ContainerIDFile": "",
            "LogConfig": {
                "Tipo": "archivo json",
                "Configuración": {}
            },
            "NetworkMode": "predeterminado",
            "PortBindings": {},
            "RestartPolicy": {
                "Nombre": "no",
                "MaximumRetryCount": 0
            },
            "AutoRemove": falso,
            "VolumeDriver": "",
            "VolumesFrom": nulo,
            "CapAdd": nulo,
            "CapDrop": nulo,
            "Capacidades": nulo,
            "Dns": [],
            "DnsOptions": [],
            "DnsSearch": [],
            "ExtraHosts": nulo,
            "GroupAdd": nulo,
            "IpcMode": "privado",
            "Cgroup": "",
            "Enlaces": nulo,
            "OomScoreAdj": 0,
            "PidMode": "",
            "Privilegiado": falso,
            "PublishAllPorts": falso,
            "ReadonlyRootfs": falso,
            "SecurityOpt": nulo,
            "UTSMode": "",
            "UsernsMode": "",
            "ShmSize": 67108864,
            "Runtime": "runc",
            "ConsoleSize": [
                30,
                149
            ],
            "Aislamiento": "",
            "CpuShares": 0,
            "Memoria": 0,
            "NanoCpus": 0,
            "CgroupParent": "",
            "BlkioWeight": 0,
            "BlkioWeightDevice": [],
            "BlkioDeviceReadBps": nulo,
            "BlkioDeviceWriteBps": nulo,
            "BlkioDeviceReadIOps": nulo,
            "BlkioDeviceWriteIOps": nulo,
            "CpuPeriod": 0,
            "CpuQuota": 0,
            "CpuRealtimePeriod": 0,
            "CpuRealtimeRuntime": 0,
            "CpusetCpus": "",
            "CpusetMems": "",
            "Dispositivos": [],
            "DeviceCgroupRules": nulo,
            "DeviceRequests": nulo,
            "KernelMemory": 0,
            "KernelMemoryTCP": 0,
            "MemoryReservation": 0,
            "MemorySwap": 0,
            "MemorySwappiness": nulo,
            "OomKillDisable": falso,
            "PidsLimit": nulo,
            "Ulimits": nulo,
            "CpuCount": 0,
            "CpuPercent": 0,
            "IOMaximumIOps": 0,
            "IOMaximumBandwidth": 0,
            "MaskedPaths": [
                "/ proc / asound",
                "/ proc / acpi",
                "/ proc / kcore",
                "/ proc / keys",
                "/ proc / latency_stats",
                "/ proc / timer_list",
                "/ proc / timer_stats",
                "/ proc / sched_debug",
                "/ proc / scsi",
                "/ sys / firmware"
            ],
            "ReadonlyPaths": [
                "/ proc / bus",
                "/ proc / fs",
                "/ proc / irq",
                "/ proc / sys",
                "/ proc / sysrq-trigger"
            ]
        },
        "GraphDriver": {
            "Datos": {
                "LowerDir": "/ var / lib / acoplable / overlay2 / 6a6f3b5f81d2b454cbcc7651b3c40c90f8da991e9b55add4cfa8de2e3a57cd4d-init / diff: / var / lib / acoplable / overlay2 / b873da3ee35fed4ed5b663d42705f29857e467ef7fc70d4f01b34e8593c90a2d / diff: / var / lib / acoplable / overlay2 / c37b3ca864167a02502bc473d368823bdf2fdddf7ef3ff0fda126aae98ccf5c3 / diff: / var / lib / acoplable / overlay2 / d0b819fd09a7a62a2fc9858b4a015cd5594a240caefce77cad9a6b0f596f0dca / diff: / var / lib / acoplable / overlay2 / 5d3260b5420b271959560369b58594ca2be7fd8ae7bd74822c24c765c8ebeafc / diff: / var / lib / acoplable / overlay2 / d874cfda684973a0d7f77e451987cd726723eab53aabf2ef285000ff32101e3d / diff",
                "MergedDir": "/ var / lib / docker / overlay2 / 6a6f3b5f81d2b454cbcc7651b3c40c90f8da991e9b55add4cfa8de2e3a57cd4d / merged",
                "UpperDir": "/ var / lib / docker / overlay2 / 6a6f3b5f81d2b454cbcc7651b3c40c90f8da991e9b55add4cfa8de2e3a57cd4d / diff",
                "WorkDir": "/ var / lib / docker / overlay2 / 6a6f3b5f81d2b454cbcc7651b3c40c90f8da991e9b55add4cfa8de2e3a57cd4d / work"
            },
            "Nombre": "overlay2"
        },
        "Monturas": [],
        "Configuración": {
            "Nombre de host": "d4f849b858a9",
            "Nombre de dominio": "",
            "Usuario": "",
            "AttachStdin": falso,
            "AttachStdout": falso,
            "AttachStderr": falso,
            "ExposedPorts": {
                "80 / tcp": {}
            },
            "Tty": falso,
            "OpenStdin": falso,
            "StdinOnce": falso,
            "Env": [
                "RUTA = / usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin",
                "NGINX_VERSION = 1.19.2",
                "NJS_VERSION = 0.4.3",
                "PKG_RELEASE = 1 ~ destructor"
            ],
            "Cmd": [
                "nginx",
                "-gramo",
                "demonio apagado";
            ],
            "Imagen": "nginx",
            "Volúmenes": nulo,
            "WorkingDir": "",
            "Punto de entrada": [
                "/docker-entrypoint.sh"
            ],
            "OnBuild": nulo,
            "Etiquetas": {
                "mantenedor": "NGINX Docker Maintainers <docker-maint@nginx.com>"
            },
            "StopSignal": "SIGTERM"
        },
        "Configuración de la red": {
            "Puente": "",
            "SandboxID": "ca6953bd7a7a11a50091be348a1414f9891d28fef9dcc241cc96332651fa0132",
            "HairpinMode": falso,
            "LinkLocalIPv6Address": "",
            "LinkLocalIPv6PrefixLen": 0,
            "Puertos": {
                "80 / tcp": nulo
            },
            "SandboxKey": "/ var / run / docker / netns / ca6953bd7a7a",
            "SecondaryIPAddresses": nulo,
            "EndpointID": "2044cf6b4ded03757b71a40d21b727f0287ac1b1c1f5edbe1f767d5fffa67456",
            "Puerta de enlace": "172.17.0.1",
            "GlobalIPv6Address": "",
            "GlobalIPv6PrefixLen": 0,
            "IPAddress": "172.17.0.2",
            "IPPrefixLen": 16,
            "IPv6Gateway": "",
            "MacAddress": "02: 42: ac: 11: 00: 02",
            "Redes": {
                "puente": {
                    "IPAMConfig": nulo,
                    "Enlaces": nulo,
                    "Alias": nulo,
                    "NetworkID": "0099dce04d4e730d272d5c774970a65704c8df6869dfadba2c2363e532c4caf9",
                    "EndpointID": "2044cf6b4ded03757b71a40d21b727f0287ac1b1c1f5edbe1f767d5fffa67456",
                    "Puerta de enlace": "172.17.0.1",
                    "IPAddress": "172.17.0.2",
                    "IPPrefixLen": 16,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "02: 42: ac: 11: 00: 02",
                    "DriverOpts": nulo
                }
            }
        }
    }
]

Filtrado Inspeccionar salida

Dado que la salida es tan grande, puede canalizar los resultados a Select-String en Powershell o grep en bash. Por ejemplo:

$ contenedor docker inspeccionar nginx | Select-String -Pattern IPAddress

            "SecondaryIPAddresses": nulo,
            "IPAddress": "172.17.0.2",
                    "IPAddress": "172.17.0.2",

Estadísticas de contenedores Docker

Al usar el comando stats, puede ver todos los contenedores en ejecución juntos o especificar solo un contenedor que desea ver. La salida son datos de transmisión en vivo que se actualizan en tiempo real con la CPU, la memoria, io, etc.

$ estadísticas del contenedor docker
NOMBRE DE ID DE CONTENEDOR CPU% MEM USO / LÍMITE MEM% NET E / S BLOQUE E / S PIDS
e9263551f40f mysql 0.13% 332MiB / 6.087GiB 5.33% 866B / 0B 0B / 0B 38
d4f849b858a9 nginx 0,00% 3,973MiB / 6,087GiB 0,06% 1,05kB / 0B 0B / 0B 2
$ docker container stats nginx
NOMBRE DE ID DE CONTENEDOR CPU% MEM USO / LÍMITE MEM% NET E / S BLOQUE E / S PIDS
d4f849b858a9 nginx 0,00% 3,973MiB / 6,087GiB 0,06% 1,05kB / 0B 0B / 0B 2
$ docker contenedor estadísticas mysql
NOMBRE DE ID DE CONTENEDOR CPU% MEM USO / LÍMITE MEM% NET E / S BLOQUE E / S PIDS
e9263551f40f mysql 1.98% 332MiB / 6.087GiB 5.33% 866B / 0B 0B / 0B 38

Resumen de comandos de supervisión de Docker

Ahora sabemos cómo usar el comando docker container top para enumerar todos los procesos que se ejecutarán en un solo contenedor. También aprendimos sobre la inspección de contenedores de la ventana acoplable para ver cómo se ejecutó el contenedor y cuáles son sus opciones y configuración. El comando docker container stats que se mostró nos dio una salida de actualización en vivo al terminal del uso de CPU, uso de memoria, Net IO y Block IO.

parte superior del contenedor dockerMostrar los procesos en ejecución de un contenedor
inspección del contenedor del estibadorMostrar información detallada sobre uno o más contenedores
estadísticas del contenedor de DockerMostrar una transmisión en vivo de estadísticas de uso de recursos de contenedores



Publicar un comentario

0 Comentarios