Como determinar o tamanho da imagem do Docker antes de ser puxado?

29

Podemos procurar arquivos de imagem disponíveis no site do Docker da seguinte forma:

Como posso saber qual será o tamanho do download antes de puxar?

docker.io pull [image]
    
por Sepero 03.06.2014 / 03:58

3 respostas

14

Olhando para a API do Docker, Docker Remote API v1.10 , ela não aparecem há qualquer maneira de obter os tamanhos das imagens. A seção "2.2 Imagens" mostra as especificações de como consultar sobre imagens.

Exemplo

    GET /images/json?all=0 HTTP/1.1

**Example response**:

    HTTP/1.1 200 OK
    Content-Type: application/json

    [
      {
         "RepoTags": [
           "ubuntu:12.04",
           "ubuntu:precise",
           "ubuntu:latest"
         ],
         "Id": "8dbd9e392a964056420e5d58ca5cc376ef18e2de93b5cc90e868a1bbc8318c1c",
         "Created": 1365714795,
         "Size": 131506275,
         "VirtualSize": 131506275
      },
      {
         "RepoTags": [
           "ubuntu:12.10",
           "ubuntu:quantal"
         ],
         "ParentId": "27cf784147099545",
         "Id": "b750fe79269d2ec9a3c593ef05b4332b1d1a02a62b4accb2c21d589ff2f5f2dc",
         "Created": 1364102658,
         "Size": 24653,
         "VirtualSize": 180116135
      }
    ]

Mas esta consulta precisa ir contra uma instância real do Docker. Aqui está um exemplo mostrando como alguém poderia usar a consulta RESTful acima:

$ echo -e "GET /images/json HTTP/1.0\r\n" | nc -U /var/run/docker.sock
HTTP/1.0 200 OK
Content-Type: application/json
Content-Length: 858
Connection: close
Date: Fri, 20 Dec 2013 16:02:41 GMT

[{"Repository":"ubuntu","Tag":"12.04","Id":"8dbd9e392...",
"Created":1365714795,"Size":131502179,"VirtualSize":131502179},
{"Repository":"ubuntu","Tag":"latest","Id":"8dbd9e392...",
"Created":1365714795,"Size":131502179,"VirtualSize":131502179},
{"Repository":"ubuntu","Tag":"precise","Id":"8dbd9e392...",
"Created":1365714795,"Size":131502179,"VirtualSize":131502179},
{"Repository":"ubuntu","Tag":"12.10","Id":"b750fe792...",
"Created":1364102658,"Size":24653,"VirtualSize":180116135},
{"Repository":"ubuntu","Tag":"quantal","Id":"b750fe792...",
"Created":1364102658,"Size":24653,"VirtualSize":180116135}]

Não vejo como consultar os repositórios públicos usando essa chamada RESTful em particular. O único outro método RESTful que parecia que você poderia consultar as imagens do docker.io era através da pesquisa, GET /images/search , mas a API não mostra nenhum atributo de tamanho sendo retornado para isso.

Referências

por 03.06.2014 / 08:20
6

Esta não é uma resposta direta à sua pergunta, mas espero que seja útil mesmo assim.

No script de uso do disco nas minhas experiências do Docker Eu uso algo assim:

docker run --entrypoint=/bin/sh $image -c 'du -sh / 2>/dev/null | cut -f1'

Para que você possa executar, por exemplo:

docker run --entrypoint=/bin/sh ubuntu -c 'du -sh / 2>/dev/null | cut -f1'

Ou você pode fazer o download desse script: uso de disco e executar, e. ./disk-usage "ubuntu busybox gcc" para que o uso do disco (conforme relatado por du -sh ) seja exibido para essas 3 imagens:

Image   Disk usage
-----   ----------
ubuntu  209M
busybox 2.6M
gcc     1.5G

Por favor, note que ele não mostra o download real necessário para qualquer imagem, e ele irá exibir o resultado depois de baixar a imagem, mas dá uma idéia sobre como uma imagem é inchada em comparação com os outros.

Você pode executá-lo em uma máquina para decidir se deseja baixar essas imagens em outras máquinas ou usá-las.

    
por 07.03.2015 / 04:17
1

Se você realmente olhar para o código de encaixe para operação de pull, acho que sua resposta está aí. Se a imagem do contêiner não estiver armazenada em cache, durante a extração da imagem, a janela de encaixe primeiro coletará as informações sobre a imagem do registro, como o número de camadas, o tamanho de cada uma delas, etc. etc.

Gostaria de me referir a ler este arquivo.

link

    
por 22.06.2017 / 09:28

Tags