Wykonałem dokowanie i mogę wyświetlić listę pobranych obrazów. Chcę zobaczyć zawartość tego obrazu. Czy wyszukiwanie w sieci, ale nie ma prostej odpowiedzi.
Wykonałem dokowanie i mogę wyświetlić listę pobranych obrazów. Chcę zobaczyć zawartość tego obrazu. Czy wyszukiwanie w sieci, ale nie ma prostej odpowiedzi.
Odpowiedzi:
Możesz po prostu uruchomić interaktywny kontener powłoki za pomocą tego obrazu i przeglądać zawartość tego obrazu.
Na przykład:
docker run -it image_name sh
Lub obserwuj dla obrazów z entrypoint
docker run -it --entrypoint sh image_name
Lub, jeśli chcesz zobaczyć, jak zbudowano obraz, co oznacza jego kroki Dockerfile
, możesz:
docker image history --no-trunc image_name > image_history
Kroki zostaną zalogowane do image_history
pliku.
docker run -it --entrypoint cmd <image_name>
zadziała.
Przyjęta tutaj odpowiedź jest problematyczna, ponieważ nie ma gwarancji, że obraz będzie miał jakąkolwiek interaktywną powłokę. Na przykład, obraz drona / dron zawiera jedno polecenie /drone
, a także ma ENTRYPOINT
również, więc to się nie powiedzie:
$ docker run -it drone/drone sh
FATA[0000] DRONE_HOST is not properly configured
A to się nie powiedzie:
$ docker run --rm -it --entrypoint sh drone/drone
docker: Error response from daemon: oci runtime error: container_linux.go:247: starting container process caused "exec: \"sh\": executable file not found in $PATH".
To nie jest rzadka konfiguracja; wiele minimalnych obrazów zawiera tylko pliki binarne niezbędne do obsługi usługi docelowej. Na szczęście istnieją mechanizmy eksploracji systemu plików obrazu, które nie zależą od zawartości obrazu. Najłatwiejsze jest prawdopodobnie docker export
polecenie, które wyeksportuje system plików kontenera jako archiwum tar. Tak więc uruchom kontener (nie ma znaczenia, czy zawiedzie, czy nie):
$ docker run -it drone/drone sh
FATA[0000] DRONE_HOST is not properly configured
Następnie użyj przycisku, docker export
aby wyeksportować system plików do tar
:
$ docker export $(docker ps -lq) | tar tf -
docker ps -lq
Nie oznacza „dać mi identyfikator najnowszej pojemnika Döcker”. Możesz zastąpić to jawną nazwą kontenera lub identyfikatorem.
Nie należy uruchamiać kontenera tylko po to, aby zobaczyć zawartość obrazu. Na przykład możesz poszukać złośliwej zawartości, a nie uruchamiać ją. Użyj „Utwórz” zamiast „Uruchom”;
docker create --name="tmp_$$" image:tag
docker export tmp_$$ | tar t
docker rm tmp_$$
docker export tmp_$$ > image-fs.tar
.
docker export tmp_$$ | tar t
Nie będzie działać.
tar
może nie zostać zainstalowany na twoim komputerze. Spróbuj tar --help
to sprawdzić.
-o
parametru, aby określić plik do zapisu. Np docker export -o c:\temp\tmp_$$.tar tmp_$$
.
docker save nginx > nginx.tar
tar -xvf nginx.tar
Obecne są następujące pliki:
https://sreeninet.wordpress.com/2016/06/11/looking-inside-container-images/
LUB
możesz użyć nurkowania do interaktywnego przeglądania zawartości obrazu za pomocą TUI
docker
zobaczyć zawartość tego, co jest w zasadzie innym typem pliku archiwum.
docker save --output nginx.tar nginx:latest
, w przeciwnym razie, zgodnie z doc, będzie zawierać „wszystkie warstwy nadrzędne, a wszystkie tagi + wersje”
Aby wyświetlić szczegółową zawartość obrazu, musisz uruchomić, docker run --rm image/name ls -alR
gdzie --rm
oznacza usunięcie, jak tylko wyjdzie z pojemnika.
ls
dostępny iPATH
ODKRYWANIE OBRAZU DOCKERA !
Dowiedzieć się, jaki rodzaj powłoki jest tam bash
albo sh
albo ...
Najpierw sprawdź obraz: docker inspect name-of-container-or-image
Poszukaj entrypoint
lub cmd
w Json Return.
Następnie wykonaj: docker run --rm -it --entrypoint=/bin/bash name-of-image
w środku wykonaj: ls -lsa
lub dowolne inne polecenie powłoki, takie jak:cd ..
-it
Oznacza interaktywnej ... a tty. --rm
oznacza Zabrać pojemnik po uruchomieniu.
ls
. Lub w ogóle jakiekolwiek popularne narzędzia.
Możemy wypróbować prostszy w następujący sposób:
docker image inspect image_id
Działa to w wersji Docker:
DockerVersion": "18.05.0-ce"
Dzięki Docker EE dla Windows (17.06.2-ee-6 na Hyper-V Server 2016) cała zawartość kontenerów Windows może być badana na C:\ProgramData\docker\windowsfilter\
ścieżce systemu operacyjnego hosta.
Nie wymaga specjalnego montażu.
Prefiks folderu można znaleźć na podstawie identyfikatora kontenera na docker ps -a
wyjściu.
Istnieje bezpłatne narzędzie typu open source o nazwie Anchore, którego można użyć do skanowania obrazów kontenerów. To polecenie pozwala wyświetlić listę wszystkich plików w obrazie kontenera
zawartość obrazu anchore-cli myrepo / app: najnowsze pliki