503 Služba není k dispozici: Jak přesvědčit ukotvitelnou stanici, aby aktualizovala své ubuntu závislosti

Nedávno jsem se pokoušel sestavit dokovací kontejner na mém MacOSu a narazil jsem na problém, že dokovací kontejner nemohl stáhnout ubuntu závislosti.

Vzhledem k tomu, že kolegům a mně trvalo nějakou dobu, než přijali řešení tohoto problému, doufám, že následující dokumentace našeho přístupu a konečné řešení vám pomůže ušetřit několik hodin výzkumu.

Chybová zpráva

Jeden z kontejnerových doků, který jsem dostal od svého klienta, na mém počítači nestavěl. Pro všechny ostatní kolegy v týmu to fungovalo naprosto v pořádku. Můj terminál však uvedl, že služba ubuntu není k dispozici:

W: Úložiště „http://security.ubuntu.com/ubuntu xenial-security Release“ nemá soubor Release. W: Úložiště „http://archive.ubuntu.com/ubuntu xenial Release“ nemá soubor Release. W: Úložiště „http://archive.ubuntu.com/ubuntu xenial-updates Release“ nemá soubor Release. W: Úložiště „http://archive.ubuntu.com/ubuntu xenial-backports Release“ nemá soubor Release. E: Nepodařilo se načíst http://security.ubuntu.com/ubuntu/dists/xenial-security/main/binary-amd64/Packages 503 Service Unavailable [IP: 91.189.91.14 80] E: Nepodařilo se načíst http: // archive.ubuntu.com/ubuntu/dists/xenial/main/binary-amd64/Packages 503 Service Unavailable [IP: 91.189.88.174 80] E: Nepodařilo se načíst http://archive.ubuntu.com/ubuntu/dists/xenial -updates / main / binary-amd64 / Packages 503 Service Unavailable [IP: 91.189.88.174 80] E: Nepodařilo se načíst http://archive.ubuntu.com/ubuntu/dists/xenial-backports/main/binary-amd64/ Balíčky 503 Služba není k dispozici [IP: 91.189.88.162 80] E: Některé soubory indexu se nepodařilo stáhnout. Byly ignorovány nebo místo toho použity staré.

Nejdříve jsem zkontroloval, zda jsou IP adresy skutečně dostupné z mého místního počítače:

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

Obě adresy lze vyřešit a dosáhnout. Abychom vyloučili možný vedlejší účinek z jakéhokoli jiného příkazu v Dockerfile, vytvořil jsem jednoduchý Dockerfile, který vytváří pouze prostředí ubuntu.

Z ubuntu: 16.04 RUN apt-get update CMD [“/ bin / bash”]

Také to nefungovalo a vyústilo ve stejné chybové zprávy 503.

Google skóroval hit s následujícím článkem, který navrhl zkontrolovat položky DNS. Bohužel to také nepomohlo. Bylo jen několik dalších požadavků na server se stejným kódem chyby. Žádné však neposkytlo řešení.

Tehdy začala detektivní práce: Protože došlo k chybovému kódu 503, bylo pravděpodobné, že se jednalo o chybně fungující proxy. Přesto jsem nevěděl, že běží proxy. Proto jsem začal kontrolovat všechna místa na mém počítači, kde by se mohly skrýt některé zbytky z bývalé instalace proxy:

1. Zkontrolujte cntlm.conf

Zkontrolujte, zda v souboru cntlm.conf můžete najít podezřelé řádky. Tento soubor najdete pod /usr/local/etc/cntlm.conf

2. Zkontrolujte hostitelský soubor

Zkontrolujte, zda váš hostitelský soubor nezasahuje. Soubor najdete pod / etc / hosts

3. Zkontrolujte nastavení síťového proxy

V počítači Mac přejděte na System Preferences (Předvolby systému). Otevřete sekci Síť, vyberte svou aktuální síť, přejděte na Upřesnit> Proxy a zkontrolujte nastavení.

Možná jeden z výše uvedených kroků váš problém vyřešil. V mém případě to nepomohlo. Poté, co jsem strávil hodiny, které byly v podstatě plné opakování iterací výše uvedených kroků, jsem nakonec skončil na docela zřejmém - ale pro mě docela skrytém - místě:

4. Nastavení proxy serveru Docker Desktop

Zkontrolujte nastavení serveru proxy aplikace Docker Desktop.

Pokud je zapnuta funkce Ruční proxy, může to být ono. Alespoň to je to, co mi problém vyřešilo: Docker nepoužíval systémový proxy, ale ruční, který musel být náhodně nakonfigurován před týdny. Po přepnutí nastavení na System Proxy fungovaly oba Dockerfiles perfektně.