503 Service utilgængelig: Sådan overbeviser docker om at opdatere sine ubuntu-afhængigheder

For nylig forsøgte jeg at bygge en dockercontainer på min MacOS og stødte derved på problemet, at dockercontaineren ikke var i stand til at downloade ubuntu-afhængigheder.

Da det tog mine kolleger og mig ret lang tid at finde ud af løsningen på dette problem, håber jeg, at følgende dokumentation af vores tilgang og den endelige løsning vil hjælpe dig med at spare nogle timers forskning.

Fejlmeddelelsen

En af dockercontainerne, jeg fik fra min klient, byggede ikke på min maskine. For alle mine andre teamkolleger fungerede det perfekt. Men min terminal erklærede, at ubuntu-tjenesten ikke er tilgængelig:

W: Opbevaringsstedet 'http://security.ubuntu.com/ubuntu frigivelse af xenial-sikkerhed' har ikke en release-fil. W: Opbevaringsstedet 'http://archive.ubuntu.com/ubuntu xenial Release' har ikke en frigivelsesfil. W: Depotet 'http://archive.ubuntu.com/ubuntu xenial-updates Release' har ikke en frigivelsesfil. W: Opbevaringsstedet 'http://archive.ubuntu.com/ubuntu frigivelse af xenial-backports' har ikke en frigivelsesfil. E: Kunne ikke hente http://security.ubuntu.com/ubuntu/dists/xenial-security/main/binary-amd64/Pakker 503 Service Utilgængelig [IP: 91.189.91.14 80] E: Kunne ikke hente http: // archive.ubuntu.com/ubuntu/dists/xenial/main/binary-amd64/Pakker 503 Service Utilgængelig [IP: 91.189.88.174 80] E: Kunne ikke hente http://archive.ubuntu.com/ubuntu/dists/xenial -updates / main / binary-amd64 / Packages 503 Service Utilgængelig [IP: 91.189.88.174 80] E: Kunne ikke hente http://archive.ubuntu.com/ubuntu/dists/xenial-backports/main/binary-amd64/ Pakker 503 Service ikke tilgængelig [IP: 91.189.88.162 80] E: Nogle indeksfiler kunne ikke downloades. De er blevet ignoreret, eller gamle brugt i stedet.

Først og fremmest kontrollerede jeg, om IP'erne faktisk kan nås fra min lokale maskine:

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

Begge adresser kunne løses og nås. For at udelukke en mulig bivirkning fra enhver anden kommando i Dockerfile oprettede jeg en simpel Dockerfile, der kun bygger et ubuntu-miljø.

FRA ubuntu: 16.04 KØR apt-get-opdatering CMD [“/ bin / bash”]

Det virkede heller ikke og resulterede i de samme 503 fejlmeddelelser.

Google fik et hit med den følgende artikel, der foreslog at kontrollere DNS-posterne. Desværre hjalp det heller ikke. Der var kun et par andre hits med nøjagtigt den samme fejlkode. Ingen gav dog en løsning.

Det er da, detektivarbejdet begyndte: Da fejlkoden 503 opstod, var det sandsynligt, at der var tale om en forkert proxy. Alligevel var jeg ikke opmærksom på, at der var nogen proxy, der kørte. Derfor begyndte jeg at kontrollere alle de pletter på min maskine, hvor nogle rester fra en tidligere proxyinstallation muligvis skjulte:

1. Kontroller cntlm.conf

Kontroller, om du kan se nogen mistænkelige linjer i din cntlm.conf-fil. Du kan finde denne fil under /usr/local/etc/cntlm.conf

2. Kontroller hostfilen

Tjek din hostfil for intervenerende poster. Du kan finde filen under / etc / hosts

3. Kontroller Network Proxy-indstillinger

Gå til Systemindstillingerne på din Mac. Åbn sektionen Netværk, vælg dit nuværende netværk, gå til Avanceret> Proxies, og kontroller indstillingerne dobbelt.

Måske et af trinnene ovenfor allerede løst dit problem. I mit tilfælde hjalp det ikke. Efter at have brugt timer, der dybest set var fyldt med at gentage trinene ovenfor, endte jeg til sidst på en ret åbenlyst - men for mig ganske skjult - placering:

4. Docker Desktop Proxy-indstillinger

Kontroller proxyindstillingerne i Docker Desktop-applikationen.

Hvis manuel proxy er tændt, kan det være det. I det mindste er det det, der løste problemet for mig: Docker brugte ikke systemproxy, men en manuel en, der skal være konfigureret ved et uheld for uger siden. Efter at have skiftet indstillingen til System Proxy, fungerede begge Dockerfiles perfekt.