How to determine Docker image size before being pulled?












30















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


















30















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
















30












30








30


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

634619




634619










asked Jun 3 '14 at 1:58









SeperoSepero

58931226




58931226








  • 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












4 Answers
4






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



















6














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








      New contributor




      Di Lin 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

























        4 Answers
        4






        active

        oldest

        votes








        4 Answers
        4






        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

        253k71535687




        253k71535687













        • 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













        6














        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




























          6














          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


























            6












            6








            6







            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,5381147




            2,5381147























                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








                        New contributor




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

























                          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








                          New contributor




                          Di Lin 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








                            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








                            New contributor




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











                            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








                            New contributor




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








                            share


                            share






                            New contributor




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









                            answered 5 mins ago









                            Di LinDi Lin

                            1




                            1




                            New contributor




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





                            New contributor





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






                            Di Lin 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

                                Accessing regular linux commands in Huawei's Dopra Linux

                                Can't connect RFCOMM socket: Host is down

                                Kernel panic - not syncing: Fatal Exception in Interrupt