Finding the layers and layer sizes for each Docker image

后端 未结 11 1680
自闭症患者
自闭症患者 2020-12-04 06:47

For research purposes I\'m trying to crawl the public Docker registry ( https://registry.hub.docker.com/ ) and find out 1) how many layers an average image has and 2) the si

相关标签:
11条回答
  • 2020-12-04 07:26

    Not exactly the original question but to find the sum total of all the images without double-counting shared layers, the following is useful (ubuntu 18):

    sudo du -h -d1  /var/lib/docker/overlay2 | sort -h
    
    0 讨论(0)
  • 2020-12-04 07:28

    In my opinion, docker history <image> is sufficient. This returns the size of each layer:

    $ docker history jenkinsci-jnlp-slave:2019-1-9c
    IMAGE        CREATED    CREATED BY                                    SIZE  COMMENT
    93f48953d298 42 min ago /bin/sh -c #(nop)  USER jenkins               0B
    6305b07d4650 42 min ago /bin/sh -c chown jenkins:jenkins -R /home/je… 1.45GB
    
    0 讨论(0)
  • 2020-12-04 07:30

    You can first find the image ID using:

    $ docker images -a
    

    Then find the image's layers and their sizes:

    $ docker history --no-trunc <Image ID>
    

    Note: I'm using Docker version 1.13.1

    $ docker -v
    Docker version 1.13.1, build 092cba3
    
    0 讨论(0)
  • 2020-12-04 07:31

    This will inspect the docker image and print the layers:

    $ docker image inspect nginx -f '{{.RootFS.Layers}}'
    [sha256:d626a8ad97a1f9c1f2c4db3814751ada64f60aed927764a3f994fcd88363b659 sha256:82b81d779f8352b20e52295afc6d0eab7e61c0ec7af96d85b8cda7800285d97d sha256:7ab428981537aa7d0c79bc1acbf208c71e57d9678f7deca4267cc03fba26b9c8]
    
    0 讨论(0)
  • 2020-12-04 07:32

    You can find the layers of the images in the folder /var/lib/docker/aufs/layers; provide if you configured for storage-driver as aufs (default option)

    Example:

     docker ps -a
     CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
     0ca502fa6aae        ubuntu              "/bin/bash"         44 minutes ago      Exited (0) 44 seconds ago                       DockerTest
    

    Now to view the layers of the containers that were created with the image "Ubuntu"; go to /var/lib/docker/aufs/layers directory and cat the file starts with the container ID (here it is 0ca502fa6aae*)

     root@viswesn-vm2:/var/lib/docker/aufs/layers# cat    0ca502fa6aaefc89f690736609b54b2f0fdebfe8452902ca383020e3b0d266f9-init 
     d2a0ecffe6fa4ef3de9646a75cc629bbd9da7eead7f767cb810f9808d6b3ecb6
     29460ac934423a55802fcad24856827050697b4a9f33550bd93c82762fb6db8f
     b670fb0c7ecd3d2c401fbfd1fa4d7a872fbada0a4b8c2516d0be18911c6b25d6
     83e4dde6b9cfddf46b75a07ec8d65ad87a748b98cf27de7d5b3298c1f3455ae4
    

    This will show the result of same by running

    root@viswesn-vm2:/var/lib/docker/aufs/layers# docker history ubuntu
    IMAGE               CREATED             CREATED BY                                         SIZE                COMMENT
    d2a0ecffe6fa        13 days ago         /bin/sh -c #(nop) CMD ["/bin/bash"]             0 B                 
    29460ac93442        13 days ago         /bin/sh -c sed -i 's/^#\s*\   (deb.*universe\)$/   1.895 kB            
    b670fb0c7ecd        13 days ago         /bin/sh -c echo '#!/bin/sh' > /usr/sbin/polic   194.5 kB            
    83e4dde6b9cf        13 days ago         /bin/sh -c #(nop) ADD file:c8f078961a543cdefa   188.2 MB 
    

    To view the full layer ID; run with --no-trunc option as part of history command.

    docker history --no-trunc ubuntu
    
    0 讨论(0)
提交回复
热议问题