Contacta con nosotros
contacto@flabo.es

Docker build + cntlm

Si estas trabajando detras de un proxy CNTLM para poder hacer un bypass de la seguridad NTLM y construyendo imágenes docker habrás tenido problemas en el momento de construir una imagen que requiere de conexión a internet.
Para solucionarlo debes hacer lo siguiente:

  1. Configurar tu CNTLM en modo Gateway. Para ello edita el fichero cntlm.conf y descomenta la propiedad “Gateway”. Con esto hacemos que CNTLM escuche en todas las interfaces de red.
  2. Reinicia CNTLM.
  3. Obten la IP de la máquina que ejecuta CNTLM con ipconfig en windows o ifconfig en Linux y busca una interfaz de red con nombre “docker”. Esta interfaz de red es la que utilizara el daemon de docker para conectarse a la red.
    docker0   Link encap:Ethernet  HWaddr 02:42:3b:91:69:cc
    inet addr:172.17.0.1  Bcast:172.17.255.255  Mask:255.255.0.0
    inet6 addr: fe80::42:3bff:fe91:69cc/64 Scope:Link
    UP BROADCAST MULTICAST  MTU:1500  Metric:1
    RX packets:7978 errors:0 dropped:0 overruns:0 frame:0
    TX packets:11613 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:0
    RX bytes:425628 (425.6 KB)  TX bytes:21097213 (21.0 MB)
    
    enp0s3    Link encap:Ethernet  HWaddr 08:00:27:14:69:62
    inet addr:10.0.2.15  Bcast:10.0.2.255  Mask:255.255.255.0
    inet6 addr: fe80::c216:6b82:4a02:f986/64 Scope:Link
    UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
    RX packets:709926 errors:0 dropped:0 overruns:0 frame:0
    TX packets:248684 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:1000
    RX bytes:720525701 (720.5 MB)  TX bytes:24136285 (24.1 MB)
    
    lo        Link encap:Local Loopback
    inet addr:127.0.0.1  Mask:255.0.0.0
    inet6 addr: ::1/128 Scope:Host
    UP LOOPBACK RUNNING  MTU:65536  Metric:1
    RX packets:236057 errors:0 dropped:0 overruns:0 frame:0
    TX packets:236057 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:1000
    RX bytes:679117183 (679.1 MB)  TX bytes:679117183 (679.1 MB)
    
  4. Y ahora a la hora de hacer el build debemos indicar que durante el proceso de build utilice proxy:
    --build-arg http_proxy="http://172.17.0.1:3128"

Con esto el proceso de construcción de la imagen utilizará la interfaz de red creada para docker, comunicandose por el puerto de CNTLM para que actúe como proxy y todo ello sin necesidad de configurar ni definir los proxy dentro del Dockerfile.