Я сделал вытягивание докера и могу перечислить загруженный образ. Я хочу увидеть содержимое этого изображения. Сделал поиск в сети, но нет прямого ответа.
Я сделал вытягивание докера и могу перечислить загруженный образ. Я хочу увидеть содержимое этого изображения. Сделал поиск в сети, но нет прямого ответа.
Ответы:
Вы можете просто запустить интерактивный контейнер оболочки, используя это изображение, и исследовать любой контент, который имеет это изображение.
Например:
docker run -it image_name sh
Или следите за изображениями с entrypoint
docker run -it --entrypoint sh image_name
Или, если вы хотите увидеть, как было построено изображение, то есть шаги по его созданию Dockerfile, вы можете:
docker image history --no-trunc image_name > image_history
Шаги будут записаны в image_historyфайл.
docker run -it --entrypoint cmd <image_name>будет работать.
Принятый ответ здесь проблематичен, потому что нет гарантии, что изображение будет иметь какую-либо интерактивную оболочку. Например, образ дрон / дрон содержится в одной команде /drone, и он также имеет ENTRYPOINT, так что это не удастся:
$ docker run -it drone/drone sh
FATA[0000] DRONE_HOST is not properly configured
И это не удастся
$ 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".
Это не редкая конфигурация; многие минимальные изображения содержат только двоичные файлы, необходимые для поддержки целевого сервиса. К счастью, существуют механизмы для изучения файловой системы изображения, которые не зависят от содержимого изображения. Самой простой, вероятно, является docker exportкоманда, которая экспортирует файловую систему контейнера в виде архива tar. Итак, запустите контейнер (не важно, выйдет он из строя или нет):
$ docker run -it drone/drone sh
FATA[0000] DRONE_HOST is not properly configured
Затем используйте docker exportдля экспорта файловой системы в tar:
$ docker export $(docker ps -lq) | tar tf -
Там docker ps -lqесть «дай мне идентификатор самого последнего контейнера докера». Вы можете заменить это явным именем контейнера или идентификатором.
Вы не должны запускать контейнер только для просмотра содержимого изображения. Например, вы можете искать вредоносный контент, а не запускать его. Используйте «создать» вместо «запустить»;
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будет работать.
tarможет быть не установлен на вашем компьютере. Попробуйте tar --helpпроверить это.
-oпараметр, чтобы указать файл для записи. Например docker export -o c:\temp\tmp_$$.tar tmp_$$.
docker save nginx > nginx.tar
tar -xvf nginx.tar
Следующие файлы присутствуют:
https://sreeninet.wordpress.com/2016/06/11/looking-inside-container-images/
ИЛИ
Вы можете использовать погружение для интерактивного просмотра содержимого изображения с помощью TUI.
dockerпросто посмотреть содержимое архивного файла другого типа.
docker save --output nginx.tar nginx:latestиначе, согласно документу, он будет содержать «все родительские слои и все теги + версии»
Чтобы просмотреть подробный контент изображения, вы должны запустить, docker run --rm image/name ls -alRгде --rmозначает удалить, как только выходы из контейнера.
lsдоступно и вPATH
ИЗУЧЕНИЕ ДОКЕРА ИЗОБРАЖЕНИЯ !
Выясните, что за оболочка там bashили shили ...
Сначала проверьте изображение: docker inspect name-of-container-or-image
Ищите entrypointили cmdв возвращении JSON.
Затем сделайте: docker run --rm -it --entrypoint=/bin/bash name-of-image
когда-то внутри сделайте: ls -lsaили любую другую команду оболочки как:cd ..
-itОзначает интерактивный ... и терминал. --rmозначает удалить контейнер после запуска.
ls. Или вообще какие-то общие инструменты.
Мы можем попробовать более простой вариант следующим образом:
docker image inspect image_id
Это работало в версии Docker:
DockerVersion": "18.05.0-ce"
С помощью Docker EE для Windows (17.06.2-ee-6 на Hyper-V Server 2016) все содержимое контейнеров Windows можно просмотреть на C:\ProgramData\docker\windowsfilter\ пути к операционной системе хоста.
Никакого специального монтажа не требуется.
Префикс папки можно найти по идентификатору контейнера из docker ps -aвывода.
Существует бесплатный инструмент с открытым исходным кодом, называемый Anchore, который вы можете использовать для сканирования изображений контейнера. Эта команда позволит вам перечислить все файлы в образе контейнера
содержание изображения anchore-cli myrepo / app: последние файлы