GNU/Linux >> Znalost Linux >  >> Panels >> Docker

Umístění lupy na Docker s Docker Inspect

Pokud hledáte podrobný pohled na všechny hlavní součásti Dockeru z obrazů Dockeru, kontejnerů atd., příkaz docker inspect je pro vás.

V tomto tutoriálu se naučíte, jak se stát detektivem, abyste objevili podrobné informace o mnoha komponentách Dockeru pro ladění, odstraňování problémů nebo jen pro vaši pouhou zvědavost.

Začínáme!

Předpoklady

Pokud chcete postupovat krok za krokem, ujistěte se, že máte následující:

  • Docker – Tento výukový program používá Docker v19.03.11 na Ubuntu 18.04.5 LTS.
  • Jakýkoli stažený a dostupný obrázek Dockeru. Tento výukový program používá nejnovější obraz NGINX Docker dostupný na Docker Hub.
  • Na hostiteli Docker běží alespoň jeden kontejner.

Kontrola obrázků Docker pomocí Docker Inspect

Docker Inspect může poskytnout informace o mnoha různých komponentách Dockeru, ale začněme nejprve jednou z nejoblíbenějších komponent; snímky. Pokud jste si stáhli obrázek, jak potom zkontrolujete informace o tomto obrázku? Pojďme to zjistit.

Za předpokladu, že máte na svém hostiteli Docker alespoň jeden obrázek, použijte inspect příkaz k dotazu na tento obrázek. Níže uvedený příkaz předpokládá, že máte obrázek s názvem nginx na vašem hostiteli.

docker image inspect nginx

Po provedení výše uvedený příkaz vrátí množství informací prostřednictvím JSON o tomto konkrétním obrázku. Některé pozoruhodné atributy jsou:

  1. Značka obrázku.
  2. Čas vytvoření obrázku.
  3. Název hostitele přidruženého kontejneru s nginx obrazu Docker.
  4. Síťové porty, které kontejner zpřístupňuje vnější síti.
  5. Také si všimnete svazků připojených ke kontejneru, který patří k obrazu nginx Docker.

Získání podrobných informací o sítích Docker

docker inspect příkaz není odkázán pouze na získávání informací o obrázcích a kontejnerech; může také dotazovat sítě. Sítě Docker umožňují kontejnerům komunikovat různými způsoby, například prostřednictvím mostové sítě (privátní síť), hostitelské sítě (veřejná síť) nebo překryvné sítě.

Znalost sítí Docker je důležitá, protože vám umožňuje kdykoli přepnout na jinou síť Docker podle potřeby aplikace odpojením a následným připojením zpět.

Za předpokladu, že jste stále na terminálu:

1. Spusťte níže uvedený příkaz. docker network ls příkaz zobrazí seznam všech sítí přítomných v Dockeru. K nalezení ID sítě budete potřebovat výstup tohoto příkazu.

docker network ls

Dále předejte ID sítě do docker inspect network příkaz. Tento příkaz vrací různé informace o konkrétní síti, jak je uvedeno níže.

docker inspect network 4748f122c987

1. Typ sítě.

2. Adresa podsítě, kterou síť používá.

3 a 4. Souhrnné informace o každém kontejneru, který používá tuto konkrétní síť.

Seznámení s šablonami Docker's Go a Format Parametr

Doposud jste se naučili používat příkaz Docker inspect bez použití jakýchkoli dalších parametrů voleb. Pokud však potřebujete upravit výstupní formát, zvažte použití --format vlajka. --format Parametr používá Go šablony k filtrování a zobrazení informací vrácených z docker inspect .

Spolu s příznakem formátu se používají různé funkce, jako je join, println, table atd. Pojďme si některé z nich probrat!

Například možná chcete spojit některé hodnoty dohromady z výstupu z konkrétního kontejneru. Pokud ano, join příkaz funguje dobře. Níže uvidíte, že join příkaz zřetězí řetězce dohromady (nginx, -g, daemon off ) s každým prvkem odděleným oddělovačem (, ).

docker inspect --format '{{join .Args " , "}}' container_id

Možná byste chtěli hodnotu kapitalizovat? Použijte upper příkaz.

docker inspect --format "{{upper .Name}}" container_id

Můžete najít mnoho různých příkladů použití format parametr.

Nalezení názvu základního obrázku kontejneru Docker

V předchozí části jste viděli, jak získat podrobný pohled na všechny obrázky Docker, včetně kontejnerů, které tyto obrázky používají. Ale co když již znáte ID kontejneru a potřebujete rychle najít obrázek, ze kterého byl vytvořen? ID kontejneru můžete poskytnout ke docker inspect .

Chcete-li zjistit název obrázku, ze kterého je vytvořen konkrétní kontejner, spusťte níže docker inspect příkaz. Níže uvedený příkaz předá ID kontejneru (8f34d039fa3a v tomto případě) docker inspect a používá format parametr vrátit pouze image hodnotu z Config uzel ve výstupu JSON.

# 8f34d039fa3a is the container represented with ContainerID.
docker inspect --format='{{.Config.Image}}' 8f34d039fa3a

Můžete vidět, co celý Config uzel vypadá níže a kde je Image jméno pochází z.

Nalezení IP adresy, Mac adresy a vazeb portů kontejneru

I když nyní víte, jak najít síť, kterou kontejner používá, jak víte, jakou IP adresu nebo Mac adresu a portové vazby v této síti kontejner používá? Uhodl jsi to! docker inspect .

Chcete-li zúžit IP adresu, kterou kontejner používá, předejte ID kontejneru docker inspect příkaz. Opět použijte format parametr k odfiltrování nežádoucího JSON, abyste se dostali přesně k tomu, co hledáte.

Zobrazí se format argument parametru níže říká docker inspect pouze vrátit hodnotu vloženou do NetworkSettingsNetworksIPAddress Atribut JSON pomocí range atribut. Atribut range vám umožňuje iterovat pole a nastavit . hodnotu pro každý prvek pole.

docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' my_container

Zobrazí se hlavní NetworkSettings uzel níže a kde IPAddress hodnota je vnořená.

Podobně vyhledejte adresu MAC kontejneru, použijte docker inspect kontejner, jak je znázorněno níže.

Opět uvidíte, že format argument parametru níže používá range ale tentokrát zjistěte adresu Mac kontejneru v NetworkSettingsNetworksMac address .

docker inspect --format='{{range .NetworkSettings.Networks}}{{.MacAddress}}{{end}}' 3dd206041249

Nakonec Chcete-li zkontrolovat všechny vazby portů kontejneru, spusťte níže uvedený docker inspect příkaz. Zobrazí se format argument parametru níže používá range Chcete-li najít vazby portů kontejneru, zkontrolujte v NetworkSettingsHostPort .

Oměli byste vědět o vazbách portů, protože pokud je již nějaký port použit, neměl by být znovu použit; jinak se zobrazí chybová zpráva oznamující, že port je již přidělen.

docker inspect --format='{{range $p, $conf := .NetworkSettings.Ports}} {{$p}} -> {{(index $conf 0).HostPort}} {{end}}' 8f34d039fa3a

Získání podrobného zobrazení svazku Docker pomocí Docker Inspect

Doposud jste se naučili, jak najít podrobné informace o obrázcích, kontejnerech a sítích, ale neučili jste se o úložišti. Pojďme to změnit.

Aby bylo zajištěno, že výukový program má alespoň jeden připojený svazek připojený ke kontejneru, nejprve vytvořte kontejner a připojte úložný svazek.

Pokud již máte úložný prostor připojený ke kontejneru, můžete tuto část přeskočit.

Níže uvedený příkaz vytvoří nový kontejner Docker s názvem my_container , zpřístupní hostiteli port 80 (-p 80:80 ), připojí svazek na základě /var/container_dir hostitele adresář s názvem mounted_val (-v mounted_vol:/var/container_dir ) pomocí nginx obrázek.

docker run --name my_container -p 80:80 -v mounted_vol:/var/container_dir nginx

Nyní, když máte svazek připojený ke kontejneru, zadejte název svazku pro docker volume inspect . Všimněte si níže, že příkaz vrací výstup JSON a poskytuje pouze informace o připojeném svazku úložiště.

docker volume inspect mounted_vol

Závěr

Nyní byste měli být schopni používat docker inspect příkaz v mnoha různých situacích, od dotazování na informace o obrazech, kontejnerech, sítích a úložištích.

Jak plánujete používat docker inspect k dotazování na informace o vašem vlastním prostředí Docker?


Docker
  1. Nainstalujte ModSecurity s Apache v kontejneru Docker

  2. Nainstalujte server Wireguard VPN pomocí Docker

  3. Nastavte Nextcloud s Redis pomocí Dockeru

  1. Jak nainstalovat Jenkins pomocí Docker

  2. Jak nasadit mikroslužby s Dockerem

  3. Jak nasadit aplikace s Rancherem

  1. Jak nainstalovat Mastodon Social Network s Dockerem na Ubuntu 18.04 LTS

  2. Začínáme s předpřipravenými obrázky Docker

  3. Jak používat příkaz Docker Inspect