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.
Nie dupek. Wyświetlanie kontenera i obrazu to nie to samo. Możesz przejrzeć początkowy system plików lub nawet sprawdzić, czy w obrazie nie ma nic złośliwego, zanim zacznie działać.
Keilaron
4
jeśli nie możesz uruchomić obrazu jako kontenera, możesz użyć narzędzia takiego jak dysk ( github.com/wagoodman/dive ) lub możesz użyć opcji docker save, aby wyeksportować obraz jako plik tar. Następnie możesz zbadać smołę lub nurkować, aby jak najszybciej zbadać obraz.
Dzięki. Po pierwsze tego szukam. Zasadniczo przeglądaj foldery.
pylearn
9
Próbuję zobaczyć zawartość obrazu utworzonego za pomocą „FROM scratch” i nie ma dostępnej powłoki. Czy jest jakiś inny sposób, aby zobaczyć zawartość? Obraz, który próbuję zobaczyć, to portainer / portainer.
Juan Hernandez
2
Czy to możliwe, że ktoś zobaczy zawartość obrazu bez odradzania pojemnika? Czy możemy założyć, że jest bezpieczny dla wszystkich, chyba że mają prawa do odrodzenia z niego kontenera?
Shabirmean
3
połączenie tego, co zostało powiedziane wcześniej „dla kontenera Windows z punktem wejścia”: 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 ENTRYPOINTró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 exportpolecenie, 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 exportaby wyeksportować system plików do tar:
$ docker export $(docker ps -lq) | tar tf -
docker ps -lqNie oznacza „dać mi identyfikator najnowszej pojemnika Döcker”. Możesz zastąpić to jawną nazwą kontenera lub identyfikatorem.
ta odpowiedź jest bardzo pomocna, aby dowiedzieć się, co może być w danym momencie w pojemniku
João Andrade
2
Ta odpowiedź jest bardziej poprawna i działa dla mnie, ponieważ chcę eksplorować zawartość obrazu za pomocą zagranicznej architektury i nie mogę go „po prostu uruchomić”
Vladimir Perevalov,
95
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_$$
Drugi wiersz powyżej zawiera tylko zawartość systemu plików. Jeśli chcesz pobrać wszystkie pliki jako tar, możesz je zastąpić czymś takim docker export tmp_$$ > image-fs.tar.
Pino
Jaka będzie druga linia dla systemu operacyjnego Windows? docker export tmp_$$ | tar tNie będzie działać.
Alexei Marinichenko
@Alexei Marinichenko tarmoże nie zostać zainstalowany na twoim komputerze. Spróbuj tar --helpto sprawdzić.
Abdurrahman I.
1
Działa to również wtedy, gdy w pojemniku nie ma powłoki
Peter Dotchev,
3
@AlexeiMarinichenko możesz użyć -oparametru, aby określić plik do zapisu. Np docker export -o c:\temp\tmp_$$.tar tmp_$$.
GiddyUpHorsey
62
docker save nginx > nginx.tar
tar -xvf nginx.tar
Obecne są następujące pliki:
manifest.json - opisuje warstwy systemu plików i nazwę pliku json, który ma właściwości kontenera.
.json - Właściwości kontenera
- Każdy katalog „layerid” zawiera plik json opisujący właściwości warstwy i system plików związany z tą warstwą. Docker przechowuje obrazy kontenerów jako warstwy, aby zoptymalizować przestrzeń dyskową poprzez ponowne użycie warstw na obrazach.
Wydaje mi się to najbardziej przydatną odpowiedzią, ponieważ nie trzeba uruchamiać kontenera, aby uzyskać pliki.
Alec Thomas
1
Absolutnie się zgadzam @AlecThomas - i aby pójść o krok dalej, dlaczego muszę nawet dockerzobaczyć zawartość tego, co jest w zasadzie innym typem pliku archiwum.
Ed Randall
dobra odpowiedź, chciałbym również określić tag: docker save --output nginx.tar nginx:latest, w przeciwnym razie, zgodnie z doc, będzie zawierać „wszystkie warstwy nadrzędne, a wszystkie tagi + wersje”
Tarek
Powinno to zostać ocenione pozytywnie, ponieważ jest to prawdopodobnie jedyny sposób na zbadanie wewnętrznych elementów, jeśli nie masz w sobie żadnego z narzędzi uniksowych. Również w ten sposób nie wymaga utworzenia kontenera.
Stanislav German-Evtushenko
9
Aby wyświetlić szczegółową zawartość obrazu, musisz uruchomić, docker run --rm image/name ls -alRgdzie --rmoznacza usunięcie, jak tylko wyjdzie z pojemnika.
Problem z tą odpowiedzią jest to, że, jak to omówiono w przyjętym odpowiedź, nie ma gwarancji, że obraz ma żadnej powłoki w nim. Lub ls. Lub w ogóle jakiekolwiek popularne narzędzia.
To nie pokazuje zawartości ; pokazuje tylko warstwy itp., które zostały wykorzystane do budowy obrazu.
Roger Lipscombe
0
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 -awyjś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
Odpowiedzi:
Możesz po prostu uruchomić interaktywny kontener powłoki za pomocą tego obrazu i przeglądać zawartość tego obrazu.
Na przykład:
Lub obserwuj dla obrazów z
entrypoint
Lub, jeśli chcesz zobaczyć, jak zbudowano obraz, co oznacza jego kroki
Dockerfile
, możesz:Kroki zostaną zalogowane do
image_history
pliku.źródło
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 maENTRYPOINT
również, więc to się nie powiedzie:A to się nie powiedzie:
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):Następnie użyj przycisku,
docker export
aby wyeksportować system plików dotar
:docker ps -lq
Nie oznacza „dać mi identyfikator najnowszej pojemnika Döcker”. Możesz zastąpić to jawną nazwą kontenera lub identyfikatorem.źródło
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”;
źródło
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óbujtar --help
to sprawdzić.-o
parametru, aby określić plik do zapisu. Npdocker export -o c:\temp\tmp_$$.tar tmp_$$
.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
https://github.com/wagoodman/dive
źródło
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.źródło
ls
dostępny iPATH
ODKRYWANIE OBRAZU DOCKERA !
Dowiedzieć się, jaki rodzaj powłoki jest tam
bash
albosh
albo ...Najpierw sprawdź obraz:
docker inspect name-of-container-or-image
Poszukaj
entrypoint
lubcmd
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.źródło
ls
. Lub w ogóle jakiekolwiek popularne narzędzia.Możemy wypróbować prostszy w następujący sposób:
Działa to w wersji Docker:
źródło
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.źródło
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
https://anchore.com/opensource/
źródło