Fiz um puxador do docker e posso listar a imagem baixada. Eu quero ver o conteúdo desta imagem. Fiz uma pesquisa na net, mas nenhuma resposta direta.
Fiz um puxador do docker e posso listar a imagem baixada. Eu quero ver o conteúdo desta imagem. Fiz uma pesquisa na net, mas nenhuma resposta direta.
Respostas:
Você pode simplesmente executar um contêiner de shell interativo usando essa imagem e explorar qualquer conteúdo que a imagem tenha.
Por exemplo:
docker run -it image_name sh
Ou seguindo para imagens com um entrypoint
docker run -it --entrypoint sh image_name
Ou, se você quiser ver como a imagem foi criada, ou seja, as etapas Dockerfile
, é possível:
docker image history --no-trunc image_name > image_history
As etapas serão registradas no image_history
arquivo.
docker run -it --entrypoint cmd <image_name>
funcionará.
A resposta aceita aqui é problemática, porque não há garantia de que uma imagem tenha qualquer tipo de shell interativo. Por exemplo, o zumbido / zumbido imagem contém em um único comando /drone
, e ele tem um ENTRYPOINT
bem, de modo que este irá falhar:
$ docker run -it drone/drone sh
FATA[0000] DRONE_HOST is not properly configured
E isso irá falhar:
$ 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".
Esta não é uma configuração incomum; muitas imagens mínimas contêm apenas os binários necessários para dar suporte ao serviço de destino. Felizmente, existem mecanismos para explorar um sistema de arquivos de imagem que não dependem do conteúdo da imagem. O mais fácil é provavelmente o docker export
comando, que exportará um sistema de arquivos contêiner como um arquivo tar. Portanto, inicie um contêiner (não importa se falha ou não):
$ docker run -it drone/drone sh
FATA[0000] DRONE_HOST is not properly configured
Em seguida, use docker export
para exportar o sistema de arquivos para tar
:
$ docker export $(docker ps -lq) | tar tf -
O docker ps -lq
significa "me dê o ID do contêiner do docker mais recente". Você pode substituir isso por um nome ou ID explícito de contêiner.
Você não deve iniciar um contêiner apenas para ver o conteúdo da imagem. Por exemplo, você pode procurar conteúdo malicioso, não executá-lo. Use "create" em vez de "run";
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
não vai funcionar.
tar
pode não estar instalado em sua máquina. Tente tar --help
verificar isso.
-o
parâmetro para especificar o arquivo no qual gravar. Por exemplo docker export -o c:\temp\tmp_$$.tar tmp_$$
.
docker save nginx > nginx.tar
tar -xvf nginx.tar
Os seguintes arquivos estão presentes:
https://sreeninet.wordpress.com/2016/06/11/looking-inside-container-images/
OU
você pode usar o mergulho para visualizar o conteúdo da imagem interativamente com a TUI
docker
apenas ver o conteúdo do que é, essencialmente, apenas um tipo diferente de arquivo morto?
docker save --output nginx.tar nginx:latest
, caso contrário, de acordo com o documento, ele irá conter "todas as camadas pai, e todas as etiquetas + versões"
Para listar o conteúdo detalhado de uma imagem, é necessário executar o docker run --rm image/name ls -alR
local em que --rm
significa remover assim que sair do formulário.
ls
disponível e naPATH
EXPLORANDO A IMAGEM DO DOCKER !
Descobrir que tipo de concha é lá bash
ou sh
ou ...
Inspecione a imagem primeiro: docker inspect name-of-container-or-image
Procure entrypoint
ou cmd
no retorno de json.
Então faça: docker run --rm -it --entrypoint=/bin/bash name-of-image
uma vez dentro do: ls -lsa
ou qualquer outro comando do shell como:cd ..
A -it
significa interativo ... e tty. os --rm
suportes para remover o recipiente após a execução.
ls
. Ou realmente qualquer ferramenta comum.
Podemos tentar um mais simples da seguinte maneira:
docker image inspect image_id
Isso funcionou na versão Docker:
DockerVersion": "18.05.0-ce"
Com o Docker EE para Windows (17.06.2-ee-6 no Hyper-V Server 2016), todo o conteúdo dos Windows Containers pode ser examinado no C:\ProgramData\docker\windowsfilter\
caminho do sistema operacional host.
Não é necessária montagem especial.
O prefixo da pasta pode ser encontrado pelo ID do contêiner da docker ps -a
saída.
Existe uma ferramenta gratuita de código aberto chamada Anchore que você pode usar para digitalizar imagens de contêineres. Este comando permitirá listar todos os arquivos em uma imagem de contêiner
conteúdo da imagem anchore-cli myrepo / app: arquivos mais recentes