Tengo un servidor Linux que ejecuta Jenkins (HTTP en el puerto 8080) y el mismo servidor también ejecuta Docker 1.12.1. Usé algunas reglas de iptables (según los documentos oficiales de instalación de Jenkins) para redirigir el puerto 8080 al puerto 80 del host, de modo que HTTP predeterminado funcionaría para Jenkins (es decir, http://myserver
en lugar de http://myserver:8080
):
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080iptables -t nat -I OUTPUT -p tcp -d 127.0.0.1 --dport 80 -j REDIRECT --to-ports 8080
Sin embargo, estas reglas interrumpen la capacidad de Docker para descargar los recursos correctos a través de HTTP durante un docker build
comando. Por ejemplo, RUN apt-get update
falla con varios errores de "error al descargar". Hacer wget http://www.google.com
dentro del contenedor devuelve el HTML de la página principal de Jenkins. Las solicitudes HTTP del host funcionan bien. La eliminación de las reglas de iptables da como resultado RUN apt-get update
trabajando de nuevo. Así que creo que esas reglas de iptables están interfiriendo con el mecanismo de red de docker.
¿Puede coexistir una redirección de puertos de este tipo con Docker? Si es así, ¿cómo se escribirían las reglas de iptables para resolver este problema?