{"id":62,"date":"2025-08-13T21:44:39","date_gmt":"2025-08-13T21:44:39","guid":{"rendered":"https:\/\/jlmota.net\/?p=62"},"modified":"2025-08-13T21:48:18","modified_gmt":"2025-08-13T21:48:18","slug":"comenzando-con-dockers","status":"publish","type":"post","link":"https:\/\/jlmota.net\/index.php\/2025\/08\/13\/comenzando-con-dockers\/","title":{"rendered":"Comenzando con Dockers"},"content":{"rendered":"\n<p class=\"has-large-font-size\"><strong>\u00bfQue es Docker?<\/strong><\/p>\n\n\n\n<p class=\"has-medium-font-size\">Docker es una plataforma de virtualizaci\u00f3n a nivel de sistema operativo que permite crear, distribuir y ejecutar aplicaciones en contenedores. Un contenedor es una unidad est\u00e1ndar de software que empaqueta c\u00f3digo y todas sus dependencias para que la aplicaci\u00f3n se ejecute de manera r\u00e1pida y confiable en diferentes entornos computacionales.<\/p>\n\n\n\n<p class=\"has-large-font-size\"><strong>\u00bfPor qu\u00e9 usar Docker?<\/strong><\/p>\n\n\n\n<p class=\"has-medium-font-size\">Docker resuelve el problema cl\u00e1sico de &#8220;funciona en mi m\u00e1quina&#8221; proporcionando:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Consistencia<\/strong>: Tu aplicaci\u00f3n funciona igual en desarrollo, testing y producci\u00f3n<\/li>\n\n\n\n<li><strong>Portabilidad<\/strong>: Los contenedores corren en cualquier sistema que soporte Docker<\/li>\n\n\n\n<li><strong>Eficiencia<\/strong>: Los contenedores comparten el kernel del sistema operativo, usando menos recursos que las m\u00e1quinas virtuales<\/li>\n\n\n\n<li><strong>Escalabilidad<\/strong>: F\u00e1cil replicaci\u00f3n y distribuci\u00f3n de aplicaciones<\/li>\n\n\n\n<li><strong>Aislamiento<\/strong>: Cada contenedor funciona de forma independient<\/li>\n<\/ul>\n\n\n\n<p class=\"has-medium-font-size\"><strong>Conceptos Fundamentales.<\/strong><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Imagen vs Contenedor<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Imagen<\/strong>: Es una plantilla de solo lectura que contiene el c\u00f3digo de la aplicaci\u00f3n, bibliotecas, dependencias y otros archivos necesarios<\/li>\n\n\n\n<li><strong>Contenedor<\/strong>: Es una instancia ejecutable de una imagen. Puedes crear m\u00faltiples contenedores desde una misma imagen<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Dockerfile<\/h3>\n\n\n\n<p>Un Dockerfile es un archivo de texto que contiene una serie de instrucciones para construir una imagen de Docker autom\u00e1ticamente.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Docker Hub<\/h3>\n\n\n\n<p>Es un registro en la nube donde puedes encontrar y compartir im\u00e1genes de Docker. Es como el &#8220;GitHub&#8221; de las im\u00e1genes Docker.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Instalaci\u00f3n de Docker<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">En Windows<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Descarga Docker Desktop desde <a href=\"https:\/\/www.docker.com\/products\/docker-desktop\">docker.com<\/a><\/li>\n\n\n\n<li>Ejecuta el instalador y sigue las instrucciones<\/li>\n\n\n\n<li>Reinicia tu computadora<\/li>\n\n\n\n<li>Ejecuta Docker Desktop<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">En macOS<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Descarga Docker Desktop para Mac<\/li>\n\n\n\n<li>Arrastra Docker.app a tu carpeta Applications<\/li>\n\n\n\n<li>Ejecuta Docker desde Applications<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">En Linux (Ubuntu\/Debian)<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code># Actualizar paquetes existentes\nsudo apt update\n\n# Instalar paquetes necesarios\nsudo apt install apt-transport-https ca-certificates curl software-properties-common\n\n# Agregar clave GPG de Docker\ncurl -fsSL https:\/\/download.docker.com\/linux\/ubuntu\/gpg | sudo apt-key add -\n\n# Agregar repositorio de Docker\nsudo add-apt-repository \"deb &#91;arch=amd64] https:\/\/download.docker.com\/linux\/ubuntu focal stable\"\n\n# Instalar Docker\nsudo apt update\nsudo apt install docker-ce\n\n# Verificar instalaci\u00f3n\nsudo systemctl status docker<\/code><\/pre>\n\n\n\n<p>Verificar la Instalaci\u00f3n<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker --version\ndocker run hello-world<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Primeros Pasos con Docker<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Comando B\u00e1sicos<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">Ver im\u00e1genes disponibles localmente<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code>docker images<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Descargar una imagen<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>docker pull ubuntu\ndocker pull nginx<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Ejecutar un contenedor<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code># Ejecutar contenedor interactivo\ndocker run -it ubuntu bash\n\n# Ejecutar contenedor en segundo plano\ndocker run -d nginx\n\n# Ejecutar con puerto expuesto\ndocker run -d -p 8080:80 nginx<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Ver contenedores en ejecuci\u00f3n<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code># Parar contenedor\ndocker stop &lt;container_id>\n\n# Eliminar contenedor\ndocker rm &lt;container_id>\n\n# Eliminar imagen\ndocker rmi &lt;image_name><\/code><\/pre>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Para tener en cuenta<\/h2>\n\n\n\n<p>Cuando se ejecuta un contenedor y la imagen no se encuentra descargada o almacenada de manera local, Docker usara Internet para descargarla imagen primero y despu\u00e9s crear el contenedor, una vez hecho esto Docker nos permitir\u00e1 almacenar la imagen en nuestra computadora para futuros contenedores, es decir una vez descargada la imagen ya no ser\u00e1 necesario volver a Internet para descargarla, estar\u00e1 disponible en nuestro repositorio local.<\/p>\n\n\n\n<p>Cuando se crea un contenedor y esta detenido, no es necesario dar <strong>RUN <\/strong>al Docker ya que esto nos creara otro contenedor a partir de la imagen, es mejor utilizar el comando <strong>docker start <\/strong>para inicializar el contenedor.<\/p>\n\n\n\n<p>Les dejo esta gu\u00eda b\u00e1sica de comandos Docker, ojo, no son todos pero puede ayudarlos en el camino para alguien que apenas se adentra en este mundo.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Gu\u00eda de Comandos B\u00e1sicos de Docker<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83d\udccb Informaci\u00f3n del Sistema<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Verificar instalaci\u00f3n y versi\u00f3n<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>docker --version                # Versi\u00f3n de Docker\ndocker version                  # Informaci\u00f3n detallada\ndocker info                     # Informaci\u00f3n del sistema Docker<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Estado del sistema<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>docker system df               # Uso de espacio en disco\ndocker system prune            # Limpiar recursos no utilizados\ndocker system prune -a         # Limpiar TODO (im\u00e1genes, contenedores, redes, etc.)<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83d\uddbc\ufe0f Gesti\u00f3n de Im\u00e1genes<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Ver im\u00e1genes<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>docker images                         # Listar todas las im\u00e1genes locales\ndocker images -a                      # Incluir im\u00e1genes intermedias\ndocker images --filter dangling=true  # Solo im\u00e1genes hu\u00e9rfanas<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Descargar im\u00e1genes<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>docker pull ubuntu             # Descargar imagen (\u00faltima versi\u00f3n)\ndocker pull ubuntu:20.04       # Descargar versi\u00f3n espec\u00edfica\ndocker pull nginx:alpine       # Descargar variante espec\u00edfica<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Construir im\u00e1genes<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>docker build .                 # Construir desde Dockerfile en directorio actual\ndocker build -t mi-app .       # Construir con nombre\/tag\ndocker build -t mi-app:v1.0 .  # Construir con tag espec\u00edfico\ndocker build -f Dockerfile.prod .  # Usar Dockerfile espec\u00edfico<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Eliminar im\u00e1genes<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>docker rmi imagen_id           # Eliminar imagen por ID\ndocker rmi mi-app:v1.0         # Eliminar imagen por nombre:tag\ndocker rmi $(docker images -q) # Eliminar todas las im\u00e1genes\ndocker image prune             # Eliminar im\u00e1genes no utilizadas\ndocker image prune -a          # Eliminar TODAS las im\u00e1genes sin usar<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Inspeccionar im\u00e1genes<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>docker inspect imagen_id       # Ver detalles de una imagen\ndocker history imagen_id       # Ver historial de capas<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83d\udce6 Gesti\u00f3n de Contenedores<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Crear y ejecutar contenedores<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code># Ejecutar contenedor b\u00e1sico\ndocker run ubuntu                        # Ejecutar y salir inmediatamente\ndocker run -it ubuntu bash               # Ejecutar interactivo con terminal\n\n# Ejecutar en segundo plano\ndocker run -d nginx                       # Ejecutar en background (detached)\ndocker run -d --name mi-nginx nginx       # Ejecutar con nombre personalizado\n\n# Mapeo de puertos\ndocker run -d -p 8080:80 nginx            # Puerto local 8080 -> puerto contenedor 80\ndocker run -d -p 127.0.0.1:8080:80 nginx  # Bind a IP espec\u00edfica\n\n# Variables de entorno\ndocker run -e ENV_VAR=valor ubuntu\ndocker run --env-file .env ubuntu         # Cargar desde archivo\n\n# Vol\u00famenes y montajes\ndocker run -v \/host\/path:\/container\/path ubuntu            # Bind mount\ndocker run -v mi-volumen:\/container\/path ubuntu            # Named volume\ndocker run --mount type=bind,source=\/host,target=\/container ubuntu<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Ver contenedores<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>docker ps                      # Contenedores en ejecuci\u00f3n\ndocker ps -a                   # Todos los contenedores\ndocker ps -l                   # \u00daltimo contenedor creado\ndocker ps -q                   # Solo IDs de contenedores activos\ndocker ps --format \"table {{.Names}}\\t{{.Status}}\\t{{.Ports}}\"  # Formato personalizado<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Controlar contenedores<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>docker start contenedor_id     # Iniciar contenedor parado\ndocker stop contenedor_id      # Parar contenedor (SIGTERM)\ndocker kill contenedor_id      # Matar contenedor (SIGKILL)\ndocker restart contenedor_id   # Reiniciar contenedor\ndocker pause contenedor_id     # Pausar contenedor\ndocker unpause contenedor_id   # Reanudar contenedor pausado<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Interactuar con contenedores<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>docker exec -it contenedor_id bash     # Ejecutar comando en contenedor activo\ndocker exec contenedor_id ls -la       # Ejecutar comando sin interacci\u00f3n\ndocker attach contenedor_id            # Conectar a contenedor (Ctrl+P+Q para salir)\ndocker cp archivo.txt contenedor_id:\/path\/  # Copiar archivo al contenedor\ndocker cp contenedor_id:\/path\/archivo.txt .  # Copiar archivo del contenedor<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Logs y monitoreo<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>docker logs contenedor_id                   # Ver logs del contenedor\ndocker logs -f contenedor_id                # Seguir logs en tiempo real\ndocker logs --tail 50 contenedor_id         # \u00daltimas 50 l\u00edneas\ndocker logs --since 2h contenedor_id        # Logs de las \u00faltimas 2 horas\ndocker stats                                # Estad\u00edsticas de uso en tiempo real\ndocker stats contenedor_id                  # Stats de contenedor espec\u00edfico\ndocker top contenedor_id                    # Procesos ejecut\u00e1ndose en el contenedor<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Eliminar contenedores<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>docker rm contenedor_id        # Eliminar contenedor parado\ndocker rm -f contenedor_id     # Forzar eliminaci\u00f3n (contenedor activo)\ndocker rm $(docker ps -aq)     # Eliminar todos los contenedores parados\ndocker container prune         # Eliminar todos los contenedores parados<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Inspeccionar contenedores<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>docker inspect contenedor_id   # Informaci\u00f3n detallada\ndocker port contenedor_id      # Ver mapeo de puertos\ndocker diff contenedor_id      # Ver cambios en el filesystem<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83d\uddc4\ufe0f Gesti\u00f3n de Vol\u00famenes<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Crear y listar vol\u00famenes<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>docker volume create mi-volumen    # Crear volumen\ndocker volume ls                   # Listar vol\u00famenes\ndocker volume inspect mi-volumen   # Inspeccionar volumen<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Usar vol\u00famenes<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>docker run -v mi-volumen:\/data ubuntu      # Montar volumen nombrado\ndocker run -v $(pwd):\/app ubuntu          # Montar directorio actual\ndocker run --mount source=mi-volumen,target=\/data ubuntu  # Sintaxis mount<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Eliminar vol\u00famenes<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>docker volume rm mi-volumen        # Eliminar volumen espec\u00edfico\ndocker volume prune                # Eliminar vol\u00famenes no utilizados<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83c\udf10 Gesti\u00f3n de Redes<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Listar y crear redes<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>docker network ls                  # Listar redes\ndocker network create mi-red       # Crear red personalizada\ndocker network create --driver bridge mi-red-bridge  # Red con driver espec\u00edfico<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Conectar contenedores a redes<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>docker run --network mi-red ubuntu         # Ejecutar en red espec\u00edfica\ndocker network connect mi-red contenedor_id    # Conectar contenedor a red\ndocker network disconnect mi-red contenedor_id  # Desconectar de red<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Inspeccionar y eliminar redes<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>docker network inspect mi-red      # Ver detalles de la red\ndocker network rm mi-red           # Eliminar red\ndocker network prune               # Eliminar redes no utilizadas<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83d\udc19 Docker Hub y Registries<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Autenticaci\u00f3n<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>docker login                       # Login en Docker Hub\ndocker login registry.example.com  # Login en registry privado\ndocker logout                      # Logout<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Push y Pull<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>docker tag mi-app usuario\/mi-app:v1.0     # Etiquetar para push\ndocker push usuario\/mi-app:v1.0           # Subir imagen\ndocker pull usuario\/mi-app:v1.0           # Descargar imagen\ndocker search nginx                       # Buscar im\u00e1genes en Docker Hub<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83d\udd27 Docker Compose (Comandos B\u00e1sicos)<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Gesti\u00f3n de servicios<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>docker-compose up                  # Levantar servicios\ndocker-compose up -d               # Levantar en background\ndocker-compose down                # Parar y eliminar servicios\ndocker-compose start               # Iniciar servicios existentes\ndocker-compose stop                # Parar servicios\ndocker-compose restart             # Reiniciar servicios<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Informaci\u00f3n y logs<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>docker-compose ps                  # Ver estado de servicios\ndocker-compose logs                # Ver logs de todos los servicios\ndocker-compose logs servicio       # Logs de servicio espec\u00edfico\ndocker-compose logs -f             # Seguir logs en tiempo real<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Construcci\u00f3n y actualizaci\u00f3n<\/h3>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\ndocker-compose build              # Construir servicios\ndocker-compose up --build         # Reconstruir y levantar\ndocker-compose pull               # Actualizar im\u00e1genes\n<\/pre><\/div>\n\n\n<h2 class=\"wp-block-heading\">\ud83e\uddf9 Comandos de Limpieza<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Limpieza general<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>docker system prune               # Limpiar contenedores parados, redes y im\u00e1genes hu\u00e9rfanas\ndocker system prune -a            # Limpiar TODO (\u00a1CUIDADO!)\ndocker system prune --volumes     # Incluir vol\u00famenes en la limpieza<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Limpieza espec\u00edfica<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>docker container prune            # Solo contenedores parados\ndocker image prune                # Solo im\u00e1genes hu\u00e9rfanas\ndocker image prune -a             # Todas las im\u00e1genes sin usar\ndocker volume prune               # Solo vol\u00famenes no utilizados\ndocker network prune              # Solo redes no utilizadas<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83d\udca1 Tips y Atajos \u00datiles<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Comandos combinados \u00fatiles<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code># Parar todos los contenedores\ndocker stop $(docker ps -q)\n\n# Eliminar todos los contenedores\ndocker rm $(docker ps -aq)\n\n# Eliminar todas las im\u00e1genes\ndocker rmi $(docker images -q)\n\n# Ver solo nombres de contenedores activos\ndocker ps --format \"table {{.Names}}\"\n\n# Ejecutar y eliminar contenedor autom\u00e1ticamente\ndocker run --rm -it ubuntu bash\n\n# Ver IPs de contenedores activos\ndocker ps -q | xargs docker inspect --format '{{ .Name }} - {{ .NetworkSettings.IPAddress }}'<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Variables de entorno \u00fatiles<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>export DOCKER_BUILDKIT=1          # Habilitar BuildKit\nexport COMPOSE_PROJECT_NAME=mi-proyecto  # Nombre por defecto para compose<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83d\udd0d Comandos de Diagn\u00f3stico<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>docker version                     # Verificar cliente y servidor\ndocker info                       # Informaci\u00f3n completa del sistema\ndocker events                     # Ver eventos en tiempo real\ndocker system df                  # Uso de espacio\ndocker stats --no-stream          # Estad\u00edsticas actuales (sin stream)<\/code><\/pre>\n\n\n\n<p>Suerte en su camino con Dockers y ojala esto les ayude. Seguir\u00e9 publicando mas informaci\u00f3n en un peque\u00f1o espacio que tenga. Saludos.<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u00bfQue es Docker? Docker es una plataforma de virtualizaci\u00f3n a nivel de sistema operativo que permite crear, distribuir y ejecutar aplicaciones en contenedores. Un contenedor es una unidad est\u00e1ndar de software que empaqueta c\u00f3digo y todas sus dependencias para que la aplicaci\u00f3n se ejecute de manera r\u00e1pida y confiable en diferentes entornos computacionales. \u00bfPor qu\u00e9 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":63,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[],"class_list":["post-62","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-infraestructura"],"_links":{"self":[{"href":"https:\/\/jlmota.net\/index.php\/wp-json\/wp\/v2\/posts\/62","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jlmota.net\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jlmota.net\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jlmota.net\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jlmota.net\/index.php\/wp-json\/wp\/v2\/comments?post=62"}],"version-history":[{"count":1,"href":"https:\/\/jlmota.net\/index.php\/wp-json\/wp\/v2\/posts\/62\/revisions"}],"predecessor-version":[{"id":64,"href":"https:\/\/jlmota.net\/index.php\/wp-json\/wp\/v2\/posts\/62\/revisions\/64"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/jlmota.net\/index.php\/wp-json\/wp\/v2\/media\/63"}],"wp:attachment":[{"href":"https:\/\/jlmota.net\/index.php\/wp-json\/wp\/v2\/media?parent=62"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jlmota.net\/index.php\/wp-json\/wp\/v2\/categories?post=62"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jlmota.net\/index.php\/wp-json\/wp\/v2\/tags?post=62"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}