Cómo Instalar un Servidor de Impresión en un Contenedor Docker en Windows
Usar un servidor de impresión en un contenedor Docker en Windows ofrece varias ventajas en un entorno de oficina.
Primero, proporciona aislamiento y seguridad, manteniendo el servidor de impresión separado del sistema operativo y reduciendo riesgos. Además, es altamente portátil, asegurando consistencia en diferentes entornos y facilitando la migración y el despliegue es rápido y la gestión se simplifica con comandos estándar de Docker.
Los contenedores son más ligeros y eficientes que las máquinas virtuales, optimizando el uso de recursos. También facilita la recuperación y respaldo mediante snapshots y versiones. Para desarrollo y pruebas, permite entornos reproducibles y ágiles.
Finalmente, las actualizaciones y mantenimiento son más sencillos, permitiendo actualizaciones sin interrupciones y fácil rollback en caso de problemas.
por eso, con estas ventajas hacen de Docker una opción eficiente y flexible para gestionar servidores de impresión en Windows.
Paso 1: Instalar Docker Desktop
Entra en la web oficina de Docker para descargar el fichero "Docker Desktop" para empezar con la instalación en Windows.
Instala Docker Desktop siguiendo las instrucciones del instalador. Asegúrate de habilitar la integración con WSL 2 (Windows Subsystem for Linux), ya que en nuestro caso no podríamos utilizar CUPS para la gestión de las impresoras.
Reinicia tu computadora para completar la instalación.
Paso 2: Preparar el Dockerfile y el Script de Entrada
Necesitamos crear un directorio de trabajo, por lo que iremos a crear una carpeta en el disco:
mkdir C:\cups-server
cd C:\cups-server
Para crear el archivo Dockerfile, abrimos un bloc de notas y pegamos el siguiente código.
# Usar Ubuntu como base
FROM ubuntu:latest
# Establecer el mantenedor
LABEL maintainer="tuemail@example.com"
# Actualizar los paquetes e instalar las dependencias necesarias
RUN apt-get update && apt-get install -y \
cups \
cups-client \
cups-filters \
cups-pdf \
ghostscript \
dbus \
avahi-daemon \
avahi-utils \
sudo \
--no-install-recommends && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*
# Crear el directorio para CUPS
RUN mkdir -p /etc/cups/ssl
# Copiar el archivo de configuración de CUPS
COPY cupsd.conf /etc/cups/cupsd.conf
# Copiar el script de entrada
COPY entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh
# Exponer el puerto de CUPS
EXPOSE 631
# Iniciar el contenedor con el script de entrada
CMD ["/entrypoint.sh"]
Recuerda que este fichero se guarda sin extensión.
Luego, creamos otro fichero con el bloc de notas llamado entrypoint.sh con el siguiente contenido:
#!/bin/bash
set -e
# Iniciar dbus
service dbus start
# Iniciar avahi-daemon manualmente si no está disponible como servicio
if command -v avahi-daemon >/dev/null 2>&1; then
avahi-daemon -D
else
echo "avahi-daemon no está instalado o no se puede ejecutar"
fi
# Iniciar CUPS
exec cupsd -f
Paso 3: Construir y Ejecutar el Contenedor
Construir la imagen de Docker:
En el cmd dentro de nuestro directorio de trabajo, creamos nuestra imagen para docker.
docker build -t cups-server .
Una vez, ya creado, vamos a ejecutar el contenedor, si nos pide cualquier elevación, la aceptaremos hasta que se complete la tarea.
docker run -d --name cups-server -p 631:631 --privileged cups-server
Paso 4: Configurar CUPS
Para acceder a la interfaz web de CUPS, tendremos que abrir nuestro navegador favorito y vamos a http://localhost:631 o a través de nuestra aplicación Docker Desktop.
Y una vez vemos que está en marcha, vamos a añadir las impresoras. Para para añadirlas y configurar tus impresoras, tenemos que seguir las instrucciones en la interfaz de CUPS, y aquí es donde buscaremos los drivers para las impresoras que vayamos añadiendo, y las configuraciones o restricciones.
Paso 5: Persistencia de Datos
Para que tus configuraciones persistan entre reinicios del contenedor, monta un volumen para las configuraciones de CUPS:
docker run -d --name cups-server -p 631:631 --privileged -v C:\path\to\cups\config:/etc/cups -v c:\path\to\cups\data:/var/spool/cups cups-server