Inicio desactivadoInicio desactivadoInicio desactivadoInicio desactivadoInicio desactivado
 

Con la popularidad de la computación en la nube en aumento, ha habido un aumento constante en el uso de la tecnología de contenedores por parte de las empresas. Docker es una tecnología de contenedor popular que exploraremos en este artículo. La configuración de un proxy para ejecutar los contenedores de Docker puede resultar desalentadora para algunos, por lo que este artículo guía al lector a través del proceso y aclara las dificultades.

Hoy en día, todos los miembros de la comunidad saben qué es un contenedor Docker y muchos de los más inclinados técnicamente aprecian esta tecnología. Se acabaron los días de las aplicaciones monolíticas y de "punto único de fallo". Ahora estamos en la era de las aplicaciones basadas en microservicios, y los contenedores Docker facilitan esto con facilidad.

A finales de 2018, la tecnología de contenedores se ha adoptado ampliamente en comparación con las máquinas virtuales (máquinas virtuales en la nube), y esta tendencia ha estado creciendo desde principios de 2017.

No sorprende que las tecnologías de contenedores más ampliamente adoptadas sean Docker (52%) y Kubernetes (30%); Estos dos están liderando el paquete actualmente. Dicho esto, más del 70% de los adoptantes (de Docker y Kubernetes) mencionaron que han implementado contenedores en máquinas virtuales, por lo que no es probable que las máquinas virtuales desaparezcan. No lo son, pero en el futuro, los ejecutivos de las TI quieren reducir sus costos de licencias de VMs.

Te puede interesar:

Los contenedores se utilizan principalmente para aplicaciones nativas de la nube (54%). A esto le siguen las aplicaciones ligeras sin estado (39%), las migraciones a la nube (32%) y las aplicaciones heredadas que se están modernizando ( https://www.zdnet.com/article/container-adoption-speeds-up-to-the-detriment -de-vms/ ).

Proxies y el servidor proxy

Un servidor proxy se encuentra entre una aplicación cliente, como un navegador web y un servidor real. Intercepta todas las solicitudes al servidor real para ver si puede cumplir las solicitudes por sí mismo. Si no, reenvía la solicitud al servidor real.

Te puede interesar:

También en el entorno del contenedor de Docker, el proxy es muy importante y se usa para manejar las conexiones que se originan en la máquina local, que de lo contrario no podría pasar a través de las reglas de iptables que Docker configura para manejar el reenvío de puertos o cuando Docker se ha configurado de tal manera que no manipular iptables en absoluto.

La configuración de un proxy se ha convertido en un problema importante en muchas configuraciones de contenedores de Docker en la actualidad debido a las diferencias de versión de la plataforma, a la gran cantidad de aplicaciones que se contienen en contenedores y a la disponibilidad de información / material limitado o disperso, lo que está creando confusión.

Como se mencionó anteriormente, la adopción y el uso del contenedor Docker está creciendo cada día y, a menudo, las personas enfrentan muchos desafíos al configurar proxies en un entorno de contenedor Docker. Veamos ahora cómo abordar muchos de estos desafíos al proporcionar las soluciones adecuadas y los pasos a seguir.

Las versiones de Docker y Ubuntu utilizadas para este artículo son:

  • Docker client 18.03.1-ce Community edition
  • Docker server 18.03.1-ce Community edition
  • Ubuntu 18.04.1 LTS Bionic release

En la configuración del servidor proxy

Esta es una configuración de proxy genérica para que los servidores host / bare-metal funcionen en conexiones normales de Internet.

1) Problema: apt-get updates and install no funcionará detrás de un proxy. Cuando se ejecuta $ sudo apt-get, se lanza un error 'Se requiere 407 autenticación de proxy'.

El ejemplo del error se muestra en la Figura 1.

Para resolver esto, asegúrese de que el proxy se haya configurado correctamente. Para hacer que apt-get funcione detrás del proxy, debemos seguir el proceso de dos pasos que se menciona a continuación.

Primero. Cree un archivo /etc/apt/apt.conf y agregue las siguientes entradas al archivo:

vi /etc/apt/apt.conf

Acquire::http::Proxy “http://username:password@proxy:port/”;
Acquire::https::Proxy “https://username:password@proxy:port/”;

Segundo. Cree un archivo /etc/apt/apt.conf.d/proxy.conf y agregue las siguientes entradas en el archivo:

$ vi /etc/apt/apt.conf.d/proxy.conf.

Acquire::http::Proxy “http://username:password@proxy:port/”;
Acquire::https::Proxy “https://username:password@proxy:port/”;

2) Problema: a veces uno sigue enfrentando errores incluso después de configurar apt config , como se mencionó anteriormente. La instalación o actualización fallará y puede que no vuelva a funcionar detrás del proxy o, a veces, la operación de extracción de la imagen de Docker tendrá problemas.

El siguiente paso resolverá este problema.

Asegúrese de configurar el DNS correcto ingresando los servidores de nombres en el archivo /etc/resolv.conf :

$ vi /etc/resolv.conf

nameserver xx.xx.xx.xx
nameserver xx.xx.xx.xx
nameserver 127.0.0.53
search company.com

Nota: Esta <dirección IP> se basa en la IP del host y la puerta de enlace utilizadas, y diferirá según la configuración. Figura 2: Agregar detalles de proxy al archivo de configuración

Proxy preconfigurado en imágenes de contenedor (migración / escenarios de configuración normales)

Cuando la imagen del contenedor se construye y se lleva a un entorno diferente, debería funcionar bien (como DNS, enrutamiento, etc.).

1) Problema: en algunos casos, apt-get o internet no funcionarán durante la creación de imágenes de contenedor.

Este problema se puede resolver de la siguiente manera. La variable de entorno se debe configurar correctamente mediante el siguiente procedimiento.

a. Verifique que las variables http_proxy, https_proxy, HTTP_PROXY y HTTPS_PROXY estén configuradas mediante el siguiente comando echo:

ubuntu@test-vm1:/etc/apt$ echo $http_proxy
http://username:password@proxy:port/

Asegúrese de que la salida es como se muestra arriba. Si la salida está vacía, continúe con la configuración de la variable de entorno como se muestra en el Paso 2 a continuación.

segundo.

# export http_proxy=http://username:password@proxy:port
# export https_proxy=https://username:password@proxy:port

Luego verifique nuevamente con el comando echo para asegurarse de que la variable de entorno se actualice correctamente.

Repita los pasos anteriores para todas las variables de entorno como https_proxy, HTTP_PROXY y HTTPS_PROXY .

2) Problema: a veces el proxy no persistirá en todos los entornos y configuraciones.

Si el archivo config.json se actualiza con los siguientes parámetros de proxy, este problema se solucionará. La Figura 2 muestra cómo editar este archivo y configurar los parámetros.

  • Actualice el archivo ~/.docker/config.json.
  • Además del paso anterior, actualice el archivo daemon /etc/default/docker con todas las variables de entorno.
  • Ahora agregue la referencia del archivo /etc/default/docker como una variable en el archivo /lib/systemd/system/docker.service como se muestra en la Figura 3.
  • Reinicie los servicios de Docker, de la siguiente manera:

# ubuntu@test-vm1:~$ sudo systemctl daemon-reload

# ubuntu@test-vm1:~$ sudo systemctl restart docker

# ubuntu@test-vm1:~$ sudo systemctl show --property Environment docker

Cómo anular la configuración del proxy (durante el tiempo de ejecución)

Este método ayuda a crear imágenes de contenedor Docker y además ayuda a anular el proxy del host para evitar problemas futuros relacionados con la configuración del proxy.

Este procedimiento ayuda a anular las configuraciones de proxy realizadas al compilar el Dockerfile sin modificar los contenidos en la configuración de /etc/default/docker. La compilación de Docker proporciona un argumento llamado build-arg, que puede utilizarse en este caso. Estos valores persistirán en las respectivas construcciones de imágenes. Si se utiliza la misma imagen, la configuración del proxy estará disponible de forma predeterminada como se configuró. Figura 3: modificando la configuración de la ventana acoplable

Nota: Es posible que los usuarios finales que deseen conectarse directamente a Internet sin un proxy no necesiten esta configuración.

El siguiente conjunto de comandos y configuraciones se utilizan para configurar este proxy:

$ sudo docker build --build-arg \ http_proxy=”http://username:password@proxy:port/” --build-arg \ https_proxy=”https://username:password@proxy:port/” --network=host.

segundo. Podemos usar el argumento –build-arg sin los valores también. Estos valores se pueden rellenar desde las variables de entorno como http_proxy, como se muestra a continuación:

$ export http_proxy=http://proxyaddress:port
$ docker build --build-arg http_proxy .

Esperamos que este artículo ayude a aquellos que enfrentan problemas de proxy al configurar los contenedores de Docker. Hemos tratado de resolver la mayoría de los problemas de configuración de proxy con este enfoque paso a paso, brindando los detalles de configuración necesarios, los comandos y las capturas de pantalla relevantes. Este artículo puede no ser de utilidad si se usa una conexión directa a Internet sin un proxy. Compartir este: