Docker — совместное использование слоев между изображениями

#docker

#docker

Вопрос:

Я загрузил два изображения, и их размеры следующие :

 openkbs/docker-spark-bde2020-zeppelin   latest                       9a0491580442        16 months ago       4.89GB
bde2020/spark-worker                    2.4.0-hadoop2.8              a00ffe532f34        19 months ago       3.29GB
  

Изображение openkbs/docker-spark-bde2020-zeppelin используется bde2020/spark-worker:2.4.0-hadoop2.8 в качестве базового изображения.

У меня сложилось впечатление, что эти изображения должны иметь общие слои, так что общий размер должен составлять 4,89 ГБ или почти 8 ГБ?

Ответ №1:

Да, одни и те же слои являются «общими». Docker использует хэши (включая файловую систему и команды) для идентификации этих слоев.

Итак, docker показывает вам размер изображений (включая базовые изображения), но это не означает, что им требуется одинаковое место на диске.

Комментарии:

1. то есть вы имеете в виду, что общий занимаемый размер может составлять не 8 ГБ?

2. ДА. Вы видите это, когда загружаете изображения с одинаковым базовым изображением. Docker пропустит существующие слои.

3. Если openkbs / docker-spark-bde2020-zeppelin действительно построен поверх bde2020 / spark-worker, да. Размер, отображаемый docker image ls , является совокупным размером всех слоев. Но я считаю, что у этих двух изображений нет общего слоя.

4. Изображение openkbs/docker-spark-bde2020-zeppelin использует bde2020 / spark-worker в качестве базового изображения. Таким образом, openkbs / docker-spark-bde2020-zeppelin должны «совместно использовать» одно и то же изображение, хотя записи отображаются по-разному «docker image ls»

5. @Nag, ваше предположение неверно. Два изображения не являются производными друг от друга. Я объясню через 1 минуту в ответе.

Ответ №2:

Размер, отображаемый docker image ls , является совокупной суммой всех нижележащих слоев изображения.

Один слой (идентифицируемый его sha256) сохраняется на диске только один раз. Вы можете сравнить изображение с объектом, который имеет несколько ссылок (ярлыков) на реальные слои, хранящиеся на диске. Следовательно, если два изображения используют общие слои, эти общие слои не учитываются дважды при экономии дискового пространства, следовательно, они доступны только для чтения.

Вы можете самостоятельно проверить слои, составляющие изображение, в RootFS.Layers :

 docker image inspect bde2020/spark-worker:2.4.0-hadoop2.8
...
"Layers": [
                "sha256:6b3f8ebf864ca8318043df199cfadafff30d4b7cd36fced3e8aa70a318a7ee7d",
                "sha256:402964b3d72ec5114e2f5a33d6f66ebec713b480b7e2eefe76316ea2716bb7b3",
                "sha256:9ab7eda5c826e4a810db57b848abef1aa507fc9739fcdb2b1e5ce59c32013a36",
                "sha256:9752c15164a87bb763f8c98594cd5f6fb1f7bfc1a345ea8d9d3cd7613b5af633",
                "sha256:f231cc200afe521444a90bdfbffb749158db7e2b7ee3b5db4f506e045732fa3d",
                "sha256:3df7be72984142742041d406d9a87e441c451a43b1b542fa04ac868651ef4270",
                "sha256:ae150883d6e23a3226361215b17132fa700296c9f3412c47122672ddb9bf6e8a",
                "sha256:aebfac95d831e52065bccfa8bff39274c6b8d6cf1ad6aa3dfe5e14f6ead25162",
                "sha256:44a0f5b45b77371e6ff5f2edb324866162a43c738906a27e6cee1dc83afd2a3d",
                "sha256:d469bcc2e5f63e2a595619d47126e4d34a8bd6ce7ef1f2aa159e7ae6b6913b25",
                "sha256:a88264111d7623ac62661e52fc3c9f5ea2a0abe1a76de6e8731badc911a77e54",
                "sha256:d6907de311c079af9a86ccc0a50faf3a9a093a6ddce723b42a381e86433be678",
                "sha256:702aa174263c14579400c326ed4b702087ae0762340286e0ef0350f5204ebb85",
                "sha256:a922bbe2853a6127aede4bcf6265db0020898334bed465ead0943c77db0b0a53",
                "sha256:16946f8b44a62aa237a0f982cdddf4d4c5076c108549c24bf8ff0ff7b33dc0de",
                "sha256:47f41289787d8bc23dc61b37b01f28dafa1cf1ad64b62f92d22d32ac48c3318a",
                "sha256:0e2def866256c9f461ee1f48a0b196a7550baf30160effeec83a1118cc9c3523",
                "sha256:12f3bd1236457e184de023b8554743ab86b84ae52213f52ddae1d00aded4a466",
                "sha256:134803d05af38d1097fe267fabafe3e2191de062c9f3e8814eee9fb662276490",
                "sha256:e1a5cad78cb9325a0d59b594b8956d66678357be7d381209e4f65ed84d183d1b",
                "sha256:9defc18a7278f6278c65281168d291723f5aaa8a3bb03c979f3c33d6666753a2",
                "sha256:0df1dbc5aaf2836ad0df46d53cdee4b2607287cb1c3321703f4e94a678869bf5",
                "sha256:7edc1cd579415076fab31f7ee0d4e7d656469e25dea76bd5aaf6c9705c7e4b99",
                "sha256:243c0e51121befddeef9c1bf096de03d4f280c98102130fb9a969f6e009914b7",
                "sha256:b3e2729e751313d03de1bc981363e31523982740fd670d7cb90222f00477cf8e",
                "sha256:2deb24b174cdd510d7fb4b66ee1b7d539a3f51287091fb3af14806c9d66a4e4d",
                "sha256:c9519bb4cbec339b1c4da93ebf8ec010ba7467b1274d89d6f7c34091b97a1f39",
                "sha256:1838afe4041e2e3a0874541d9c245e81176483275b9228f5be626355987eb536",
                "sha256:05727ed881eab7e8c276adcef34a573281c62edf3745e385ad7a127a3a93836e",
                "sha256:dd2c90fe36d9976cc33e1641d3870d5259207defc71121ad43334286e92c811f",
                "sha256:4be9d045f56c3389c9fed187035f9dad7e5ff3c2f7ea58927641589dfca61c99",
                "sha256:b3b95d836b240eb8d70b5f063ff185392be5b0e2dc53870ff7978e863c71cb8e",
                "sha256:305d71176c6a4e132381c95218051e21b8b5e9b8149b6a9a41b280389e8d09cd",
                "sha256:b98b3f11d64d5896beab197e5632b9ace49d4342ece1712d86353240791b1cc9"
            ]
...

docker image inspect openkbs/docker-spark-bde2020-zeppelin
...
"Layers": [
                "sha256:6b3f8ebf864ca8318043df199cfadafff30d4b7cd36fced3e8aa70a318a7ee7d",
                "sha256:402964b3d72ec5114e2f5a33d6f66ebec713b480b7e2eefe76316ea2716bb7b3",
                "sha256:9ab7eda5c826e4a810db57b848abef1aa507fc9739fcdb2b1e5ce59c32013a36",
                "sha256:9752c15164a87bb763f8c98594cd5f6fb1f7bfc1a345ea8d9d3cd7613b5af633",
                "sha256:f231cc200afe521444a90bdfbffb749158db7e2b7ee3b5db4f506e045732fa3d",
                "sha256:3df7be72984142742041d406d9a87e441c451a43b1b542fa04ac868651ef4270",
                "sha256:ae150883d6e23a3226361215b17132fa700296c9f3412c47122672ddb9bf6e8a",
                "sha256:aebfac95d831e52065bccfa8bff39274c6b8d6cf1ad6aa3dfe5e14f6ead25162",
                "sha256:44a0f5b45b77371e6ff5f2edb324866162a43c738906a27e6cee1dc83afd2a3d",
                "sha256:d469bcc2e5f63e2a595619d47126e4d34a8bd6ce7ef1f2aa159e7ae6b6913b25",
                "sha256:a88264111d7623ac62661e52fc3c9f5ea2a0abe1a76de6e8731badc911a77e54",
                "sha256:d6907de311c079af9a86ccc0a50faf3a9a093a6ddce723b42a381e86433be678",
                "sha256:702aa174263c14579400c326ed4b702087ae0762340286e0ef0350f5204ebb85",
                "sha256:a922bbe2853a6127aede4bcf6265db0020898334bed465ead0943c77db0b0a53",
                "sha256:16946f8b44a62aa237a0f982cdddf4d4c5076c108549c24bf8ff0ff7b33dc0de",
                "sha256:47f41289787d8bc23dc61b37b01f28dafa1cf1ad64b62f92d22d32ac48c3318a",
                "sha256:0e2def866256c9f461ee1f48a0b196a7550baf30160effeec83a1118cc9c3523",
                "sha256:12f3bd1236457e184de023b8554743ab86b84ae52213f52ddae1d00aded4a466",
                "sha256:134803d05af38d1097fe267fabafe3e2191de062c9f3e8814eee9fb662276490",
                "sha256:e1a5cad78cb9325a0d59b594b8956d66678357be7d381209e4f65ed84d183d1b",
                "sha256:9defc18a7278f6278c65281168d291723f5aaa8a3bb03c979f3c33d6666753a2",
                "sha256:0df1dbc5aaf2836ad0df46d53cdee4b2607287cb1c3321703f4e94a678869bf5",
                "sha256:7edc1cd579415076fab31f7ee0d4e7d656469e25dea76bd5aaf6c9705c7e4b99",
                "sha256:243c0e51121befddeef9c1bf096de03d4f280c98102130fb9a969f6e009914b7",
                "sha256:b3e2729e751313d03de1bc981363e31523982740fd670d7cb90222f00477cf8e",
                "sha256:2deb24b174cdd510d7fb4b66ee1b7d539a3f51287091fb3af14806c9d66a4e4d",
                "sha256:c9519bb4cbec339b1c4da93ebf8ec010ba7467b1274d89d6f7c34091b97a1f39",
                "sha256:1838afe4041e2e3a0874541d9c245e81176483275b9228f5be626355987eb536",
                "sha256:05727ed881eab7e8c276adcef34a573281c62edf3745e385ad7a127a3a93836e",
                "sha256:dd2c90fe36d9976cc33e1641d3870d5259207defc71121ad43334286e92c811f",
                "sha256:4be9d045f56c3389c9fed187035f9dad7e5ff3c2f7ea58927641589dfca61c99",
                "sha256:b3b95d836b240eb8d70b5f063ff185392be5b0e2dc53870ff7978e863c71cb8e",
                "sha256:305d71176c6a4e132381c95218051e21b8b5e9b8149b6a9a41b280389e8d09cd",
                "sha256:b98b3f11d64d5896beab197e5632b9ace49d4342ece1712d86353240791b1cc9",
                "sha256:89ae73266e33dfd0eb7874f1b6b5d4f1fef2e9c8a25904f0b2c0a68a3e6f6419",
                "sha256:6375bbfba5904c6aa452e160408d36c323e772ea4de4faa60d6f7ca74db522d4",
                "sha256:d64c48e05f8e3fdfd5fe10bbfffb28c7d0d827816ebe83b924f69bd932c85867",
                "sha256:64fdd93c1a37069f14dbdf87f3906aed05a41dbd2d6130c00b316c46312b1e87",
                "sha256:44927f232ad07125b2a7dd3f539fe9c38e33c78f27c48e30b840a17b8758353b"
            ]
...
  

Как вы можете видеть, некоторые слои являются общими, что означает, что они будут учитываться только один раз, хотя изображения не учитывают это в размере, отображаемом docker image ls

Комментарии:

1. хм, пожалуйста, проверьте это — bde2020 / spark-worker: 2.4.0-hadoop2.8 . Вы должны видеть общие слои

2. Вы на самом деле правы, но упомянутые вами изображения отличаются, openkbs / docker-spark-bde2020-zeppelin использует bde2020 / spark-worker: 2.4.0-hadoop2.8 в качестве базового изображения. Итак, у меня сложилось впечатление, что они должны использовать некоторые общие слои.

3. @Nag ты прав. Я только что извлек изображение с указанным вами тегом, и оно имеет несколько общих слоев с изображением zeppelin. Я обновлю ответ

4. Отлично. Спасибо. Это дало много информации, хотя и некоторые недоразумения 🙂