Каждая возможность говорить — это урок обучения и, следовательно, новая возможность поделиться. Этот блог посвящен одному из вопросов, которые беспокоили меня последние несколько дней. Речь идет о том, как показать различные слои изображения Docker и их размеры после загрузки.
Этим утром меня пригласили поговорить о Docker для разработчиков Java в Перу JUG. Запись теперь доступна:
Реальное содержание начинается с 5:27.
Давайте рассмотрим вопрос сейчас.
Каждое изображение Docker состоит из серии слоев. Вот цитата из docs.docker.com :
Каждое изображение состоит из серии слоев. Docker использует объединенные файловые системы для объединения этих слоев в одно изображение. Объединенные файловые системы позволяют прозрачно накладывать файлы и каталоги отдельных файловых систем, называемых ветвями, образуя единую согласованную файловую систему.
Точный размер изображения можно легко увидеть с помощью docker images
:
1
2
3
|
docker images couchbase REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE couchbase latest 45abdd57689a 3 weeks ago 372 MB |
Команда для отображения различных слоев и их размера — это docker history
:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
|
docker history couchbase IMAGE CREATED CREATED BY SIZE COMMENT 45abdd57689a 3 weeks ago /bin/sh -c #(nop) VOLUME [/opt/couchbase/var] 0 B dd8c5611343d 3 weeks ago /bin/sh -c #(nop) EXPOSE 11207/tcp 11210/tcp 0 B 30852bbad62b 3 weeks ago /bin/sh -c #(nop) CMD ["couchbase-server"] 0 B 5537747ea12f 3 weeks ago /bin/sh -c #(nop) ENTRYPOINT &{["/entrypoint. 0 B e8a83a5448df 3 weeks ago /bin/sh -c #(nop) COPY file:cbb44c9c65b64a9dc 182 B 18165b90fefa 3 weeks ago /bin/sh -c #(nop) COPY file:34e32c52f0895191f 389 B 5f37b8bdc5a6 3 weeks ago /bin/sh -c wget -N $CB_RELEASE_URL/$CB_VERSIO 212.1 MB 1a8da511d01b 3 weeks ago /bin/sh -c groupadd -g 1000 couchbase && user 328.7 kB d9b2222c39b4 3 weeks ago /bin/sh -c #(nop) ENV CB_VERSION=4.0.0 CB_REL 0 B 815f08b3c781 3 weeks ago /bin/sh -c apt-get update && apt-get inst 23.57 MB fc38f156c0ea 3 weeks ago /bin/sh -c #(nop) MAINTAINER Couchbase Docker 0 B 2a7a952931ec 3 weeks ago /bin/sh -c #(nop) CMD ["/bin/bash"] 0 B 10f1b5844a9c 3 weeks ago /bin/sh -c sed -i 's/^ #\s*\(deb.*universe\)$/ 1.911 kB 23c388b926b6 3 weeks ago /bin/sh -c echo '#!/bin/sh' > /usr/sbin/polic 156.2 kB b45376f323f5 3 weeks ago /bin/sh -c #(nop) ADD file:4a9e089e81d6581a54 135.9 MB |
Эта команда показывает разные слои, команду, используемую для каждого слоя, и точный размер каждого изображения.
Соответствующий файл Docker для этого изображения находится по адресу github.com/couchbase/docker/blob/master/enterprise/couchbase-server/4.0.0/Dockerfile .
Теперь я могу сравнить Dockerfile с точным размером и легко найти, какие слои изображения самые большие. Например, крупнейшие участники этого изображения Couchbase показаны ниже:
- Ubuntu из Dockerfile 12.04 — 135,9 МБ
- apt-get из Dockerfile вызывает еще 23,57 МБ
- Couchbase сервер составляет 212 МБ
--no-trunc
может быть указан как дополнительная опция CLI для history
чтобы показать полную команду, выполненную для построения слоя.
- Как всегда, последние слайды доступны по адресу github.com/javaee-samples/docker-java/tree/master/slides .
Ссылка: | Покажите Layers of Docker Image от нашего партнера JCG Аруна Гупты в блоге Miles to go 2.0… . |