How to determine Docker image size before being pulled?

The name of the pictureThe name of the pictureThe name of the pictureClash Royale CLAN TAG#URR8PPP





.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;








32















We can search for available image files on the docker website like this:



  • https://index.docker.io/search?q=ubuntu

How can I tell what the download size(s) will be prior to pulling?



docker.io pull [image]









share|improve this question



















  • 1





    Not a general answer, but looking at the way the stackbrew ubuntu images are built, you can guess a lower bound to the image size from the used tarballs. (For predictable bandwidth usage, you might just build the images yourself -- you'd then know how much is downloaded, i.e. just the tarball itself.)

    – sr_
    Jun 3 '14 at 6:58


















32















We can search for available image files on the docker website like this:



  • https://index.docker.io/search?q=ubuntu

How can I tell what the download size(s) will be prior to pulling?



docker.io pull [image]









share|improve this question



















  • 1





    Not a general answer, but looking at the way the stackbrew ubuntu images are built, you can guess a lower bound to the image size from the used tarballs. (For predictable bandwidth usage, you might just build the images yourself -- you'd then know how much is downloaded, i.e. just the tarball itself.)

    – sr_
    Jun 3 '14 at 6:58














32












32








32


4






We can search for available image files on the docker website like this:



  • https://index.docker.io/search?q=ubuntu

How can I tell what the download size(s) will be prior to pulling?



docker.io pull [image]









share|improve this question
















We can search for available image files on the docker website like this:



  • https://index.docker.io/search?q=ubuntu

How can I tell what the download size(s) will be prior to pulling?



docker.io pull [image]






docker






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Jan 14 '18 at 17:57









Chris Stryczynski

669620




669620










asked Jun 3 '14 at 1:58









SeperoSepero

59931226




59931226







  • 1





    Not a general answer, but looking at the way the stackbrew ubuntu images are built, you can guess a lower bound to the image size from the used tarballs. (For predictable bandwidth usage, you might just build the images yourself -- you'd then know how much is downloaded, i.e. just the tarball itself.)

    – sr_
    Jun 3 '14 at 6:58













  • 1





    Not a general answer, but looking at the way the stackbrew ubuntu images are built, you can guess a lower bound to the image size from the used tarballs. (For predictable bandwidth usage, you might just build the images yourself -- you'd then know how much is downloaded, i.e. just the tarball itself.)

    – sr_
    Jun 3 '14 at 6:58








1




1





Not a general answer, but looking at the way the stackbrew ubuntu images are built, you can guess a lower bound to the image size from the used tarballs. (For predictable bandwidth usage, you might just build the images yourself -- you'd then know how much is downloaded, i.e. just the tarball itself.)

– sr_
Jun 3 '14 at 6:58






Not a general answer, but looking at the way the stackbrew ubuntu images are built, you can guess a lower bound to the image size from the used tarballs. (For predictable bandwidth usage, you might just build the images yourself -- you'd then know how much is downloaded, i.e. just the tarball itself.)

– sr_
Jun 3 '14 at 6:58











5 Answers
5






active

oldest

votes


















14














Looking at the API for Docker, Docker Remote API v1.10, it doesn't appear there is any way to get the sizes of the images. Section "2.2 Images" shows the spec for how to query about images.



Example



 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

]


But this query needs to go against an actual Docker instance. Here's an example showing how one could use the above RESTful query:



$ echo -e "GET /images/json HTTP/1.0rn" | 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]


I saw no way to query the public repositories using this particular RESTful call. The only other RESTful method that looked like you could query docker.io's images was via search, GET /images/search, but the API doesn't show any size attributes being returned for this.



References



  • DOCKER FROM A DISTANCE - THE REMOTE API





share|improve this answer























  • Thanks for the insights! Hopefully the docker team will start making this info available via docker search

    – Sepero
    Jun 3 '14 at 7:20












  • @Sepero - yes I'm sure over time things such as this will get added. If this A has resolved your Q's please mark it as accepted so other's know your issue's have been resolved too.

    – slm
    Jun 3 '14 at 11:16











  • Awesome, exactly what I needed!

    – Brady Dowling
    Aug 16 '17 at 17:38


















7














This is not a direct answer to your question but I hope it will be helpful nonetheless.



In the disk-usage script
in my Docker experiments
I use something like this:



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


So you can run, e.g.:



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


Or you can download that script: disk-usage
and run e.g. ./disk-usage "ubuntu busybox gcc" to have the disk usage (as reported by du -sh) displayed for those 3 images:



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


Please note that it doesn't show the actual download required for any given image, and it will display the result after downloading the image, but it gives some idea on how bloated is a given image as compared to others.



You can run it on one machine to decide whether you want to download that images on other machines, or to use it at all.






share|improve this answer






























    1














    If you really look into the docker code for pull operation, I think your answer is there. If the image of the container is not cached, then during pulling of the image, docker first collects the information about the image from the registry like number of layers, size of each layers etc. etc.



    I would refer to read this file.



    https://github.com/moxiegirl/docker/blob/master/distribution/xfer/download.go






    share|improve this answer






























      0














      1. For image on Docker Hub:

      curl -s -H "Authorization: JWT " "https://hub.docker.com/v2/repositories/library/<image-name>/tags/?page_size=100" | jq -r '.results | select(.name == "<tag-name>") | .images[0].size' | numfmt --to=iec-i



      1. For image on other registry like Microsoft Container Registry. I figure out 3 ways.



        • Use docker manifest inspect to observe the manifest data, which can give you idea on how to gain the compressed size of the image.



        docker manifest inspect -v <registry-domain>/<image-name> | grep size | awk -F ':' 'sum+=$NF END print sum' | numfmt --to=iec-i


        To enable docker manifest inspect, edit ~/.docker/config.json file and set experimental to enable.(Reference: docker manifest inspect)



        • Push the image to Docker Hub and you can get the compressed size of the image on Docker Hub website.


        • Use docker save to save image to a .tar file and then compress it a .tar.gz file.



      docker save my-image:latest > my-image.tar

      # Compress the .tar file
      gzip my-image.tar

      # Check the size of the compressed image
      ls -lh my-image.tar.gz





      share|improve this answer






























        0














        For HTTP API v2, the size is available via the tags resource under size and full_size. Here's an example URL from one of my repo's tags:



        https://cloud.docker.com/v2/repositories/deepdriveio/deepdrive/tags/?page_size=25&page=1






        share|improve this answer








        New contributor




        crizCraig is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
        Check out our Code of Conduct.




















          Your Answer








          StackExchange.ready(function()
          var channelOptions =
          tags: "".split(" "),
          id: "106"
          ;
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function()
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled)
          StackExchange.using("snippets", function()
          createEditor();
          );

          else
          createEditor();

          );

          function createEditor()
          StackExchange.prepareEditor(
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: false,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: null,
          bindNavPrevention: true,
          postfix: "",
          imageUploader:
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          ,
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          );



          );













          draft saved

          draft discarded


















          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f134186%2fhow-to-determine-docker-image-size-before-being-pulled%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown

























          5 Answers
          5






          active

          oldest

          votes








          5 Answers
          5






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes









          14














          Looking at the API for Docker, Docker Remote API v1.10, it doesn't appear there is any way to get the sizes of the images. Section "2.2 Images" shows the spec for how to query about images.



          Example



           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

          ]


          But this query needs to go against an actual Docker instance. Here's an example showing how one could use the above RESTful query:



          $ echo -e "GET /images/json HTTP/1.0rn" | 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]


          I saw no way to query the public repositories using this particular RESTful call. The only other RESTful method that looked like you could query docker.io's images was via search, GET /images/search, but the API doesn't show any size attributes being returned for this.



          References



          • DOCKER FROM A DISTANCE - THE REMOTE API





          share|improve this answer























          • Thanks for the insights! Hopefully the docker team will start making this info available via docker search

            – Sepero
            Jun 3 '14 at 7:20












          • @Sepero - yes I'm sure over time things such as this will get added. If this A has resolved your Q's please mark it as accepted so other's know your issue's have been resolved too.

            – slm
            Jun 3 '14 at 11:16











          • Awesome, exactly what I needed!

            – Brady Dowling
            Aug 16 '17 at 17:38















          14














          Looking at the API for Docker, Docker Remote API v1.10, it doesn't appear there is any way to get the sizes of the images. Section "2.2 Images" shows the spec for how to query about images.



          Example



           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

          ]


          But this query needs to go against an actual Docker instance. Here's an example showing how one could use the above RESTful query:



          $ echo -e "GET /images/json HTTP/1.0rn" | 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]


          I saw no way to query the public repositories using this particular RESTful call. The only other RESTful method that looked like you could query docker.io's images was via search, GET /images/search, but the API doesn't show any size attributes being returned for this.



          References



          • DOCKER FROM A DISTANCE - THE REMOTE API





          share|improve this answer























          • Thanks for the insights! Hopefully the docker team will start making this info available via docker search

            – Sepero
            Jun 3 '14 at 7:20












          • @Sepero - yes I'm sure over time things such as this will get added. If this A has resolved your Q's please mark it as accepted so other's know your issue's have been resolved too.

            – slm
            Jun 3 '14 at 11:16











          • Awesome, exactly what I needed!

            – Brady Dowling
            Aug 16 '17 at 17:38













          14












          14








          14







          Looking at the API for Docker, Docker Remote API v1.10, it doesn't appear there is any way to get the sizes of the images. Section "2.2 Images" shows the spec for how to query about images.



          Example



           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

          ]


          But this query needs to go against an actual Docker instance. Here's an example showing how one could use the above RESTful query:



          $ echo -e "GET /images/json HTTP/1.0rn" | 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]


          I saw no way to query the public repositories using this particular RESTful call. The only other RESTful method that looked like you could query docker.io's images was via search, GET /images/search, but the API doesn't show any size attributes being returned for this.



          References



          • DOCKER FROM A DISTANCE - THE REMOTE API





          share|improve this answer













          Looking at the API for Docker, Docker Remote API v1.10, it doesn't appear there is any way to get the sizes of the images. Section "2.2 Images" shows the spec for how to query about images.



          Example



           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

          ]


          But this query needs to go against an actual Docker instance. Here's an example showing how one could use the above RESTful query:



          $ echo -e "GET /images/json HTTP/1.0rn" | 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]


          I saw no way to query the public repositories using this particular RESTful call. The only other RESTful method that looked like you could query docker.io's images was via search, GET /images/search, but the API doesn't show any size attributes being returned for this.



          References



          • DOCKER FROM A DISTANCE - THE REMOTE API






          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Jun 3 '14 at 6:20









          slmslm

          256k71544689




          256k71544689












          • Thanks for the insights! Hopefully the docker team will start making this info available via docker search

            – Sepero
            Jun 3 '14 at 7:20












          • @Sepero - yes I'm sure over time things such as this will get added. If this A has resolved your Q's please mark it as accepted so other's know your issue's have been resolved too.

            – slm
            Jun 3 '14 at 11:16











          • Awesome, exactly what I needed!

            – Brady Dowling
            Aug 16 '17 at 17:38

















          • Thanks for the insights! Hopefully the docker team will start making this info available via docker search

            – Sepero
            Jun 3 '14 at 7:20












          • @Sepero - yes I'm sure over time things such as this will get added. If this A has resolved your Q's please mark it as accepted so other's know your issue's have been resolved too.

            – slm
            Jun 3 '14 at 11:16











          • Awesome, exactly what I needed!

            – Brady Dowling
            Aug 16 '17 at 17:38
















          Thanks for the insights! Hopefully the docker team will start making this info available via docker search

          – Sepero
          Jun 3 '14 at 7:20






          Thanks for the insights! Hopefully the docker team will start making this info available via docker search

          – Sepero
          Jun 3 '14 at 7:20














          @Sepero - yes I'm sure over time things such as this will get added. If this A has resolved your Q's please mark it as accepted so other's know your issue's have been resolved too.

          – slm
          Jun 3 '14 at 11:16





          @Sepero - yes I'm sure over time things such as this will get added. If this A has resolved your Q's please mark it as accepted so other's know your issue's have been resolved too.

          – slm
          Jun 3 '14 at 11:16













          Awesome, exactly what I needed!

          – Brady Dowling
          Aug 16 '17 at 17:38





          Awesome, exactly what I needed!

          – Brady Dowling
          Aug 16 '17 at 17:38













          7














          This is not a direct answer to your question but I hope it will be helpful nonetheless.



          In the disk-usage script
          in my Docker experiments
          I use something like this:



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


          So you can run, e.g.:



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


          Or you can download that script: disk-usage
          and run e.g. ./disk-usage "ubuntu busybox gcc" to have the disk usage (as reported by du -sh) displayed for those 3 images:



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


          Please note that it doesn't show the actual download required for any given image, and it will display the result after downloading the image, but it gives some idea on how bloated is a given image as compared to others.



          You can run it on one machine to decide whether you want to download that images on other machines, or to use it at all.






          share|improve this answer



























            7














            This is not a direct answer to your question but I hope it will be helpful nonetheless.



            In the disk-usage script
            in my Docker experiments
            I use something like this:



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


            So you can run, e.g.:



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


            Or you can download that script: disk-usage
            and run e.g. ./disk-usage "ubuntu busybox gcc" to have the disk usage (as reported by du -sh) displayed for those 3 images:



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


            Please note that it doesn't show the actual download required for any given image, and it will display the result after downloading the image, but it gives some idea on how bloated is a given image as compared to others.



            You can run it on one machine to decide whether you want to download that images on other machines, or to use it at all.






            share|improve this answer

























              7












              7








              7







              This is not a direct answer to your question but I hope it will be helpful nonetheless.



              In the disk-usage script
              in my Docker experiments
              I use something like this:



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


              So you can run, e.g.:



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


              Or you can download that script: disk-usage
              and run e.g. ./disk-usage "ubuntu busybox gcc" to have the disk usage (as reported by du -sh) displayed for those 3 images:



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


              Please note that it doesn't show the actual download required for any given image, and it will display the result after downloading the image, but it gives some idea on how bloated is a given image as compared to others.



              You can run it on one machine to decide whether you want to download that images on other machines, or to use it at all.






              share|improve this answer













              This is not a direct answer to your question but I hope it will be helpful nonetheless.



              In the disk-usage script
              in my Docker experiments
              I use something like this:



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


              So you can run, e.g.:



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


              Or you can download that script: disk-usage
              and run e.g. ./disk-usage "ubuntu busybox gcc" to have the disk usage (as reported by du -sh) displayed for those 3 images:



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


              Please note that it doesn't show the actual download required for any given image, and it will display the result after downloading the image, but it gives some idea on how bloated is a given image as compared to others.



              You can run it on one machine to decide whether you want to download that images on other machines, or to use it at all.







              share|improve this answer












              share|improve this answer



              share|improve this answer










              answered Mar 7 '15 at 3:17









              rsprsp

              2,5581147




              2,5581147





















                  1














                  If you really look into the docker code for pull operation, I think your answer is there. If the image of the container is not cached, then during pulling of the image, docker first collects the information about the image from the registry like number of layers, size of each layers etc. etc.



                  I would refer to read this file.



                  https://github.com/moxiegirl/docker/blob/master/distribution/xfer/download.go






                  share|improve this answer



























                    1














                    If you really look into the docker code for pull operation, I think your answer is there. If the image of the container is not cached, then during pulling of the image, docker first collects the information about the image from the registry like number of layers, size of each layers etc. etc.



                    I would refer to read this file.



                    https://github.com/moxiegirl/docker/blob/master/distribution/xfer/download.go






                    share|improve this answer

























                      1












                      1








                      1







                      If you really look into the docker code for pull operation, I think your answer is there. If the image of the container is not cached, then during pulling of the image, docker first collects the information about the image from the registry like number of layers, size of each layers etc. etc.



                      I would refer to read this file.



                      https://github.com/moxiegirl/docker/blob/master/distribution/xfer/download.go






                      share|improve this answer













                      If you really look into the docker code for pull operation, I think your answer is there. If the image of the container is not cached, then during pulling of the image, docker first collects the information about the image from the registry like number of layers, size of each layers etc. etc.



                      I would refer to read this file.



                      https://github.com/moxiegirl/docker/blob/master/distribution/xfer/download.go







                      share|improve this answer












                      share|improve this answer



                      share|improve this answer










                      answered Jun 22 '17 at 7:28









                      Arif A.Arif A.

                      1214




                      1214





















                          0














                          1. For image on Docker Hub:

                          curl -s -H "Authorization: JWT " "https://hub.docker.com/v2/repositories/library/<image-name>/tags/?page_size=100" | jq -r '.results | select(.name == "<tag-name>") | .images[0].size' | numfmt --to=iec-i



                          1. For image on other registry like Microsoft Container Registry. I figure out 3 ways.



                            • Use docker manifest inspect to observe the manifest data, which can give you idea on how to gain the compressed size of the image.



                            docker manifest inspect -v <registry-domain>/<image-name> | grep size | awk -F ':' 'sum+=$NF END print sum' | numfmt --to=iec-i


                            To enable docker manifest inspect, edit ~/.docker/config.json file and set experimental to enable.(Reference: docker manifest inspect)



                            • Push the image to Docker Hub and you can get the compressed size of the image on Docker Hub website.


                            • Use docker save to save image to a .tar file and then compress it a .tar.gz file.



                          docker save my-image:latest > my-image.tar

                          # Compress the .tar file
                          gzip my-image.tar

                          # Check the size of the compressed image
                          ls -lh my-image.tar.gz





                          share|improve this answer



























                            0














                            1. For image on Docker Hub:

                            curl -s -H "Authorization: JWT " "https://hub.docker.com/v2/repositories/library/<image-name>/tags/?page_size=100" | jq -r '.results | select(.name == "<tag-name>") | .images[0].size' | numfmt --to=iec-i



                            1. For image on other registry like Microsoft Container Registry. I figure out 3 ways.



                              • Use docker manifest inspect to observe the manifest data, which can give you idea on how to gain the compressed size of the image.



                              docker manifest inspect -v <registry-domain>/<image-name> | grep size | awk -F ':' 'sum+=$NF END print sum' | numfmt --to=iec-i


                              To enable docker manifest inspect, edit ~/.docker/config.json file and set experimental to enable.(Reference: docker manifest inspect)



                              • Push the image to Docker Hub and you can get the compressed size of the image on Docker Hub website.


                              • Use docker save to save image to a .tar file and then compress it a .tar.gz file.



                            docker save my-image:latest > my-image.tar

                            # Compress the .tar file
                            gzip my-image.tar

                            # Check the size of the compressed image
                            ls -lh my-image.tar.gz





                            share|improve this answer

























                              0












                              0








                              0







                              1. For image on Docker Hub:

                              curl -s -H "Authorization: JWT " "https://hub.docker.com/v2/repositories/library/<image-name>/tags/?page_size=100" | jq -r '.results | select(.name == "<tag-name>") | .images[0].size' | numfmt --to=iec-i



                              1. For image on other registry like Microsoft Container Registry. I figure out 3 ways.



                                • Use docker manifest inspect to observe the manifest data, which can give you idea on how to gain the compressed size of the image.



                                docker manifest inspect -v <registry-domain>/<image-name> | grep size | awk -F ':' 'sum+=$NF END print sum' | numfmt --to=iec-i


                                To enable docker manifest inspect, edit ~/.docker/config.json file and set experimental to enable.(Reference: docker manifest inspect)



                                • Push the image to Docker Hub and you can get the compressed size of the image on Docker Hub website.


                                • Use docker save to save image to a .tar file and then compress it a .tar.gz file.



                              docker save my-image:latest > my-image.tar

                              # Compress the .tar file
                              gzip my-image.tar

                              # Check the size of the compressed image
                              ls -lh my-image.tar.gz





                              share|improve this answer













                              1. For image on Docker Hub:

                              curl -s -H "Authorization: JWT " "https://hub.docker.com/v2/repositories/library/<image-name>/tags/?page_size=100" | jq -r '.results | select(.name == "<tag-name>") | .images[0].size' | numfmt --to=iec-i



                              1. For image on other registry like Microsoft Container Registry. I figure out 3 ways.



                                • Use docker manifest inspect to observe the manifest data, which can give you idea on how to gain the compressed size of the image.



                                docker manifest inspect -v <registry-domain>/<image-name> | grep size | awk -F ':' 'sum+=$NF END print sum' | numfmt --to=iec-i


                                To enable docker manifest inspect, edit ~/.docker/config.json file and set experimental to enable.(Reference: docker manifest inspect)



                                • Push the image to Docker Hub and you can get the compressed size of the image on Docker Hub website.


                                • Use docker save to save image to a .tar file and then compress it a .tar.gz file.



                              docker save my-image:latest > my-image.tar

                              # Compress the .tar file
                              gzip my-image.tar

                              # Check the size of the compressed image
                              ls -lh my-image.tar.gz






                              share|improve this answer












                              share|improve this answer



                              share|improve this answer










                              answered Mar 14 at 6:31









                              Di LinDi Lin

                              1




                              1





















                                  0














                                  For HTTP API v2, the size is available via the tags resource under size and full_size. Here's an example URL from one of my repo's tags:



                                  https://cloud.docker.com/v2/repositories/deepdriveio/deepdrive/tags/?page_size=25&page=1






                                  share|improve this answer








                                  New contributor




                                  crizCraig is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                                  Check out our Code of Conduct.
























                                    0














                                    For HTTP API v2, the size is available via the tags resource under size and full_size. Here's an example URL from one of my repo's tags:



                                    https://cloud.docker.com/v2/repositories/deepdriveio/deepdrive/tags/?page_size=25&page=1






                                    share|improve this answer








                                    New contributor




                                    crizCraig is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                                    Check out our Code of Conduct.






















                                      0












                                      0








                                      0







                                      For HTTP API v2, the size is available via the tags resource under size and full_size. Here's an example URL from one of my repo's tags:



                                      https://cloud.docker.com/v2/repositories/deepdriveio/deepdrive/tags/?page_size=25&page=1






                                      share|improve this answer








                                      New contributor




                                      crizCraig is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                                      Check out our Code of Conduct.










                                      For HTTP API v2, the size is available via the tags resource under size and full_size. Here's an example URL from one of my repo's tags:



                                      https://cloud.docker.com/v2/repositories/deepdriveio/deepdrive/tags/?page_size=25&page=1







                                      share|improve this answer








                                      New contributor




                                      crizCraig is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                                      Check out our Code of Conduct.









                                      share|improve this answer



                                      share|improve this answer






                                      New contributor




                                      crizCraig is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                                      Check out our Code of Conduct.









                                      answered 2 days ago









                                      crizCraigcrizCraig

                                      1034




                                      1034




                                      New contributor




                                      crizCraig is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                                      Check out our Code of Conduct.





                                      New contributor





                                      crizCraig is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                                      Check out our Code of Conduct.






                                      crizCraig is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                                      Check out our Code of Conduct.



























                                          draft saved

                                          draft discarded
















































                                          Thanks for contributing an answer to Unix & Linux Stack Exchange!


                                          • Please be sure to answer the question. Provide details and share your research!

                                          But avoid


                                          • Asking for help, clarification, or responding to other answers.

                                          • Making statements based on opinion; back them up with references or personal experience.

                                          To learn more, see our tips on writing great answers.




                                          draft saved


                                          draft discarded














                                          StackExchange.ready(
                                          function ()
                                          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f134186%2fhow-to-determine-docker-image-size-before-being-pulled%23new-answer', 'question_page');

                                          );

                                          Post as a guest















                                          Required, but never shown





















































                                          Required, but never shown














                                          Required, but never shown












                                          Required, but never shown







                                          Required, but never shown

































                                          Required, but never shown














                                          Required, but never shown












                                          Required, but never shown







                                          Required, but never shown






                                          Popular posts from this blog

                                          Peggy Mitchell

                                          The Forum (Inglewood, California)

                                          Palaiologos