docker inspect

Zwraca szczegółowe dane JSON o kontenerze lub obrazie.

docker inspect to twoja lupa do zaglądania pod maskę Dockera. Zwraca pełny, surowy obraz JSON ze wszystkim, co Docker wie o danym kontenerze lub obrazie: konfigurację sieci, zamontowane wolumeny, zmienne środowiskowe, stan procesu, restart policy, adresy IP, etykiety i kilkadziesiąt innych pól. Gdy kontener się wykłada, port nie odpowiada albo nie wiesz, jaki adres IP dostał w sieci bridge — zaczynasz właśnie od tej komendy, zamiast zgadywać.

Składnia i najważniejsze opcje

Podstawowa forma to docker inspect [OPCJE] NAZWA|ID [NAZWA|ID...]. Możesz podać kilka obiektów naraz, a dostaniesz tablicę JSON-ów.

  • -f, --format — formatuje wyjście szablonem Go zamiast wypluwać cały JSON; pozwala wyciągnąć jedno konkretne pole.
  • -s, --size — dla kontenerów dokłada rozmiar warstw (pola SizeRw i SizeRootFs).
  • --type — wymusza typ obiektu, np. --type container albo --type image, gdy nazwa jest niejednoznaczna.

To w zasadzie wszystkie flagi, jakie ta komenda ma — cała jej moc siedzi w --format i w znajomości struktury JSON-a, po którym nawigujesz kropkami.

Przykłady użycia

  • docker inspect nginx — wyrzuca pełny JSON. Uwaga: jeśli istnieje i obraz, i kontener o tej nazwie, Docker domyślnie pokaże kontener.
  • docker inspect -f '{{.State.Status}}' web — zwraca sam status, np. running albo exited, bez przewijania ekranu.
  • docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' web — wyciąga adres IP kontenera; klasyk przy debugowaniu sieci.
  • docker inspect -f '{{json .Mounts}}' db — pokazuje listę zamontowanych wolumenów jako JSON, gdy chcesz sprawdzić, gdzie wylądowały dane.
  • docker inspect --type image -s ubuntu:22.04 — wymusza spojrzenie na obraz i dorzuca jego rozmiar.

Częste błędy i pułapki

Najczęstsza wpadka to mylenie kontenera z obrazem. docker inspect obsługuje oba typy, ale struktura JSON-a jest zupełnie inna — pole .State istnieje tylko dla kontenerów, a .RootFS dla obrazów. Jeśli twój szablon zwraca pusto, prawdopodobnie celujesz w nieistniejące pole. Druga pułapka: nazwy pól są case-sensitive i pisane PascalCase (.Config.Env, nie .config.env). Trzecia: w PowerShellu i cmd cudzysłowy w szablonach Go potrafią się gryźć — na Windowsie często trzeba użyć podwójnych cudzysłowów i uważać na nawiasy klamrowe. I pamiętaj, że to polecenie tylko czyta — niczego nie zmienia, więc możesz nim sypać bez obaw o produkcję.

Powiązane komendy: docker ps (lista kontenerów i ich ID), docker logs (logi kontenera), docker stats (zużycie zasobów na żywo) oraz docker network inspect i docker volume inspect do grzebania w sieciach i wolumenach.