Docker propone virtualización de software mediante contenedores: empaquetan código, librerías y dependencias, garantizando que el software funcione idénticamente en cualquier entorno. A diferencia de máquinas virtuales que replican un sistema operativo completo, los contenedores son ligeros y portables.

Instalación

Se instala Docker Desktop y opcionalmente se integra con WSL (wsl --install). Verificación: docker --version.

Imágenes y Contenedores

Una imagen es una plantilla (como un ISO), el contenedor es la instancia en ejecución:

CMD
docker pull hello-world
docker run hello-world
docker images
docker ps -a

Despliegue de Apps Geoespaciales

Mapeo de puertos con -p y modo segundo plano con -d:

CMD
docker run -d -p 8080:80 ingjuanmasuarez/app-geoturismo:v1

PostGIS + pgAdmin con Red Docker

Se crea una red virtual para comunicación entre contenedores:

CMD
docker network create geo-net

docker run --name postgis --network geo-net \
  -e POSTGRES_USER=juanma \
  -e POSTGRES_PASSWORD=geocositas \
  -e POSTGRES_DB=gisdb \
  -p 5432:5432 -d postgis/postgis:latest

docker run --name pgadmin --network geo-net \
  -e PGADMIN_DEFAULT_EMAIL=admin@geocositas.com \
  -e PGADMIN_DEFAULT_PASSWORD=geocositas \
  -p 5050:80 -d dpage/pgadmin4

En pgAdmin, el Host name es el nombre del contenedor (postgis), no localhost. GeoServer se despliega en otro puerto: docker run -d -p 8081:8080 docker.osgeo.org/geoserver:2.23.0.