En el paso anterior, verificamos el estado del demonio de Docker usando el formato predeterminado de docker info
. Si bien el formato predeterminado es fácil de leer para humanos, no es ideal para procesamiento programático. En este paso, aprenderemos cómo obtener la información de Docker en formato JSON, que es mucho más adecuado para scripting y automatización.
Para obtener la salida en formato JSON, podemos usar el flag --format
con el comando docker info
y especificar el formato como json
.
Ejecuta el siguiente comando en tu terminal:
docker info --format '{{json .}}'
Analicemos este comando:
docker info
: Este es el comando base para obtener información del sistema Docker.
--format '{{json .}}'
: Este flag indica a Docker que formatee la salida. El valor '{{json .}}'
usa sintaxis de plantillas Go. .
representa toda la estructura de datos devuelta por docker info
, y {{json .}}
formatea esta estructura como una cadena JSON.
Después de ejecutar el comando, verás la misma información que antes, pero esta vez presentada como un único objeto JSON válido. La salida se verá similar a esto (el contenido exacto variará según tu entorno Docker):
{
"ID": "...",
"Containers": 0,
"ContainersRunning": 0,
"ContainersPaused": 0,
"ContainersStopped": 0,
"Images": 0,
"Driver": "overlay2",
"SystemStatus": null,
"Plugins": {
"Volume": ["local"],
"Network": ["bridge", "host", "ipvlan", "macvlan", "null", "overlay"],
"Authorization": null,
"Log": [
"awslogs",
"fluentd",
"gcplogs",
"gelf",
"journald",
"json-file",
"local",
"logentries",
"splunk",
"syslog"
]
},
"MemoryLimit": true,
"SwapLimit": true,
"KernelMemory": true,
"CpuCfsPeriod": true,
"CpuCfsQuota": true,
"CpuShares": true,
"CpuSet": true,
"PidsLimit": true,
"OomKillDisable": true,
"IPv4Forwarding": true,
"BridgeNfIptables": true,
"BridgeNfIp6tables": true,
"Debug": false,
"NFd": -1,
"OomScoreAdj": -1,
"Goroutines": -1,
"SystemTime": "...",
"LoggingDriver": "json-file",
"CgroupDriver": "cgroupfs",
"CgroupVersion": "1",
"NEventsListener": -1,
"KernelVersion": "...",
"OperatingSystem": "...",
"OSType": "linux",
"Architecture": "x86_64",
"IndexServerAddress": "https://index.docker.io/v1/",
"RegistryConfig": {
"AllowNondistributableArtifactsAfterDate": "2020-12-25T00:00:00Z",
"InsecureRegistryCIDRs": ["127.0.0.0/8"],
"IndexConfigs": {
"docker.io": {
"Name": "docker.io",
"Mirrors": [],
"Secure": true,
"Official": true
}
},
"Mirrors": []
},
"NCPU": -1,
"MemTotal": -1,
"GenericResources": null,
"DockerRootDir": "/var/lib/docker",
"HttpProxy": "",
"HttpsProxy": "",
"NoProxy": "",
"ExperimentalBuild": false,
"LiveRestoreEnabled": false,
"Runtimes": { "runc": { "path": "runc" } },
"DefaultRuntime": "runc",
"Swarm": {
"NodeID": "",
"LocalNodeState": "inactive",
"ControlAvailable": false,
"Error": "",
"RemoteManagers": null
},
"ContainerdCommit": { "ID": "...", "Expected": "..." },
"RuncCommit": { "ID": "...", "Expected": "..." },
"InitCommit": { "ID": "...", "Expected": "..." },
"SecurityOptions": ["apparmor", "seccomp"],
"ProductLicense": "",
"DefaultAddressPools": null,
"Warnings": null
}
Esta salida JSON puede ser fácilmente analizada por lenguajes de scripting u otras herramientas, lo que la hace muy útil para automatizar tareas relacionadas con Docker.