Crear el container de la aplicación
Desde el host, en la raíz de tu lab y sobre development, vamos a crear la instancia de la app. Antes de ejecutar el comando, comprobá que red-taller esté disponible, que el puerto 3000 del host esté libre y que ninguna instancia use el nombre lab-app.
Este es otro container, distinto de lab-agent. En el agente instalamos Hermes; acá vamos a ejecutar la aplicación. Los dos salen de la imagen taller y ven el mismo proyecto en /workspace, incluidas las dependencias de /workspace/node_modules. En cambio, los paquetes del sistema, como libatomic1, que instalás dentro de uno no aparecen automáticamente en el otro. El perfil privado de Hermes sigue montado sólo en lab-agent.
docker run -it --name lab-app \
--network red-taller \
-p 127.0.0.1:3000:3000 \
-v "$PWD":/workspace \
tallerLa shell abre en /workspace porque WORKDIR y CMD ya vienen definidos en la imagen. El bind mount te muestra el proyecto actual, no una segunda copia de la app. Por eso importa ejecutar el comando desde tu lab. No uses la carpeta original del material ni montes tu home.
El diagrama del taller es conceptual. -p 127.0.0.1:3000:3000 publica sólo en loopback del host. Un puerto publicado no es un túnel.
Leé la opción -p como dirección del host:puerto del host:puerto del container. Docker recibe en 127.0.0.1:3000 del host y reenvía al puerto 3000 de lab-app. Ya preparamos ese acceso, pero todavía falta iniciar un servidor que escuche dentro del container.
Fijate que estés dentro de lab-app, en /workspace, y que veas los archivos de tu proyecto. No sigas si Docker informa nombre ocupado, puerto ocupado o montaste otra carpeta. No elimines un container existente para liberar el nombre sin identificarlo. Si es esta misma instancia de la práctica y está detenida, recuperala desde el host con docker start -ai lab-app en lugar de crear otra.