503 Servei no disponible: Com convèncer el docker perquè actualitzi les seves dependències ubuntu

Fa poc, estava intentant construir un contenidor docker al meu MacOS i, per tant, em vaig trobar amb el problema que el contenidor docker no va poder descarregar les dependències ubuntu.

Com que els companys i jo van trigar força temps a esbrinar la solució d’aquest problema, espero que la següent documentació del nostre enfocament i la solució final us ajudin a estalviar algunes hores de recerca.

El missatge d'error

Un dels contenidors de docker que vaig obtenir del meu client no es va construir a la meva màquina. Per a tots els altres companys de l'equip, ha funcionat perfectament. Però el meu terminal va declarar que el servei ubuntu no està disponible:

W: El dipòsit "http://security.ubuntu.com/ubuntu xenial-security Release" no té cap fitxer de llançament. W: El dipòsit "http://archive.ubuntu.com/ubuntu xenial Release" no té cap fitxer de llançament. W: El dipòsit "http://archive.ubuntu.com/ubuntu xenial-Updates Release" no té cap fitxer de llançament. W: El dipòsit "http://archive.ubuntu.com/ubuntu xenial-backports Release" no té cap fitxer de llançament. E: No s'ha pogut obtenir http://security.ubuntu.com/ubuntu/dists/xenial-security/main/binary-amd64/Packages 503 Servei no disponible [IP: 91.189.91.14 80] E: No s'ha pogut recuperar http: // archive.ubuntu.com/ubuntu/dists/xenial/main/binary-amd64/Packages 503 Servei no disponible [IP: 91.189.88.174 80] E: No s'ha pogut obtenir http://archive.ubuntu.com/ubuntu/dists/xenial -updates / main / binary-amd64 / Packages 503 Servei no disponible [IP: 91.189.88.174 80] E: No s'ha pogut obtenir http://archive.ubuntu.com/ubuntu/dists/xenial-backports/main/binary-amd64/ Paquets 503 Servei no disponible [IP: 91.189.88.162 80] E: No s’han pogut descarregar alguns fitxers d’índexs. S'han ignorat, o s'han utilitzat antigues.

Primera cosa, vaig comprovar si les IP poden accedir-se realment a la meva màquina local:

wget http://security.ubuntu.com/ubuntu wget http://archive.ubuntu.com/ubuntu

Ambdues adreces es podrien resoldre i arribar. Per excloure un possible efecte secundari de qualsevol altra ordre del Dockerfile, he creat un simple Dockerfile que només construeix un entorn ubuntu.

DE ubuntu: 16.04 RUN CMD actualització apt-get CMD ["/ bin / bash"]

Tampoc va funcionar i va derivar en els mateixos 503 missatges d’error.

Google va obtenir un èxit amb l’article següent que va suggerir consultar les entrades DNS. Malauradament, tampoc va ajudar. Només hi va haver uns quants altres encerts amb el mateix codi d'error. Tanmateix, cap no va proporcionar una solució.

Va ser aleshores quan va començar el treball de detectiu: des que es va produir el codi d'error 503, és probable que hi hagués implicat un proxy de mala conducta. Tot i així, no era conscient de que s’executés cap servidor intermediari. Per això, vaig començar a revisar tots els punts de la màquina on es podrien amagar algunes restes d’una instal·lació de proxy anterior:

1. Comproveu cntlm.conf

Comproveu si podeu detectar línies sospitoses al fitxer cntlm.conf. Podeu trobar aquest fitxer a /usr/local/etc/cntlm.conf

2. Comproveu el fitxer hostf

Comproveu el fitxer hostf si hi ha entrades d'intervenció. Podeu trobar el fitxer a / etc / hosts

3. Comproveu la configuració del servidor intermediari de xarxa

Vés a les Preferències del sistema al teu Mac. Obriu la secció Xarxa, seleccioneu la vostra xarxa actual, aneu a Advanced> Proxies i comproveu la configuració.

Potser un dels passos anteriors ja va solucionar el vostre problema. En el meu cas, no va servir de res. Després de passar hores que, bàsicament, es van tornar a reiterar els passos anteriors, finalment vaig acabar amb una ubicació força obvia, però per a mi força oculta:

4. Configuració del servidor intermediari Docker

Comproveu la configuració del servidor intermediari de l’aplicació Docker Desktop.

Si el proxy manual està activat, pot ser. Almenys, això és el que va resoldre el problema per a mi: Docker no estava utilitzant el servidor intermediari del sistema, sinó un manual que deu haver estat configurat accidentalment fa setmanes. Després de canviar la configuració al proxy del sistema, tots dos Dockerfiles funcionaven perfectament.