GNU/Linux >> Znalost Linux >  >> Linux

Jak identifikovat osiřelá rozhraní veth a jak je odstranit?

Opraveno upgradem dockeru na poslední verzi. Nová verze:

[email protected] ~ # docker version
Client:
 Version:      1.8.1
 API version:  1.20
 Go version:   go1.4.2
 Git commit:   d12ea79
 Built:        Thu Aug 13 02:35:49 UTC 2015
 OS/Arch:      linux/amd64

Server:
 Version:      1.8.1
 API version:  1.20
 Go version:   go1.4.2
 Git commit:   d12ea79
 Built:        Thu Aug 13 02:35:49 UTC 2015
 OS/Arch:      linux/amd64

Nyní se rozhraní odstraní společně s kontejnery. Stará osamocená rozhraní byla odstraněna ručně následujícím příkazem:

# ip link delete <ifname>

Jsou zde tři problémy:

  1. Spuštění jednoho kontejneru by nemělo zvýšit počet veth rozhraní ve vašem systému o 2, protože když Docker vytvoří veth pár, jeden konec páru je izolován ve jmenném prostoru kontejneru a není viditelný z hostitele.

  2. Zdá se, že nemůžete spustit kontejner:

    Error response from daemon: Cannot start container ...
    
  3. Docker by měl vyčistit veth rozhraní automaticky.

Tato fakta mě nutí podezírat, že ve vašem prostředí je něco zásadně špatně. Můžete svou otázku aktualizovat podrobnostmi o tom, jakou distribuci používáte, kterou verzi jádra a kterou verzi Dockeru?

Jak mohu zjistit, která rozhraní jsou propojena se stávajícími kontejnery, a jak mohu odstranit další rozhraní, které bylo propojeno s odstraněnými kontejnery?

S ohledem na ruční smazání veth rozhraní:A veth rozhraní není most, takže jej samozřejmě nemůžete smazat pomocí brctl .

Chcete-li odstranit veth rozhraní:

# ip link delete <ifname>

Detekce „nečinných“ rozhraní je ožehavější problém, protože pokud se jen podíváte na provoz, je pravděpodobné, že omylem smažete něco, co se stále používalo, ale nevykazovalo příliš velkou aktivitu.

Myslím, že to, co byste ve skutečnosti chtěli hledat, je veth rozhraní, jejichž partner je také viditelné v globálním síťovém jmenném prostoru. Můžete najít rovnocenného partnera veth rozhraní pomocí těchto pokynů a pak by bylo jednoduché zjistit, zda je toto rozhraní viditelné, a poté jedno nebo druhé smazat (smazání veth rozhraní také odstraní svého partnera).


Linux
  1. Jak odstranit adresář a složku v Linuxu?

  2. Jak zjistit název softwaru vzdáleného serveru DNS a jeho verzi?

  3. Jak najít a odstranit prázdné adresáře a soubory v Unixu

  1. Jak zkontrolovat verzi OS a Linuxu

  2. Jak zobrazit a odstranit pravidla iptables – seznam a vyprázdnění

  3. Jak zkontrolovat OS a verzi pomocí příkazu Linux

  1. Jak odstranit vyrovnávací paměti a mezipaměť v Linuxu

  2. Jak vytvořit a odstranit uživatelskou skupinu v Linuxu

  3. Jak nainstalovat Python na Ubuntu 20.04 a 18.04?