Мне любопытно, на каком базовом изображении основан мой образ. Кажется, нет простого и простого способа сделать это. Так, например, я хочу знать базовый образ openjdk:11-jdk
.
Прежде всего, я выбираю соответствующий идентификатор изображения из моего локального репозитория, выполняя docker images | grep openjdk
, что дает мне вывод ниже.
↳ docker images | grep openjdk
openjdk 11-jdk 612d4d483eee 8 days ago 606MB
openjdk <none> 3a40000f62f1 3 weeks ago 605MB
openjdk <none> 243e95d792e3 2 months ago 605MB
Соответствующее изображение здесь 612d4d483eee
поэтому я хочу посмотреть историю этого изображения, выполнив docker history 612d4d483eee
, что дает мне вывод ниже (я пропустил опцию --no-trunc
, потому что она портит форматирование).
↳ docker history 612d4d483eee
IMAGE CREATED CREATED BY SIZE COMMENT
612d4d483eee 8 days ago /bin/sh -c #(nop) CMD ["jshell"] 0B
<missing> 8 days ago /bin/sh -c set -eux; dpkgArch="$(dpkg --pr… 322MB
<missing> 8 days ago /bin/sh -c #(nop) ENV JAVA_URL_VERSION=11.0… 0B
<missing> 8 days ago /bin/sh -c #(nop) ENV JAVA_BASE_URL=https:/… 0B
<missing> 8 days ago /bin/sh -c #(nop) ENV JAVA_VERSION=11.0.6 0B
<missing> 3 weeks ago /bin/sh -c { echo '#/bin/sh'; echo 'echo "$J… 27B
<missing> 3 weeks ago /bin/sh -c #(nop) ENV PATH=/usr/local/openj… 0B
<missing> 3 weeks ago /bin/sh -c #(nop) ENV JAVA_HOME=/usr/local/… 0B
<missing> 3 weeks ago /bin/sh -c #(nop) ENV LANG=C.UTF-8 0B
<missing> 3 weeks ago /bin/sh -c set -eux; apt-get update; apt-g… 9.68MB
<missing> 3 weeks ago /bin/sh -c apt-get update && apt-get install… 142MB
<missing> 3 weeks ago /bin/sh -c set -ex; if ! command -v gpg > /… 7.81MB
<missing> 3 weeks ago /bin/sh -c apt-get update && apt-get install… 23.3MB
<missing> 3 weeks ago /bin/sh -c #(nop) CMD ["bash"] 0B
<missing> 3 weeks ago /bin/sh -c #(nop) ADD file:8f7dc710e276f54a3… 101MB
Я вижу слои изображения, но я не вижу базового изображения.
Что я обычно делаю, это захожу на запись страницы хаба Docker (https://hub.docker.com/_/openjdk) и проверяю, есть ли где-нибудь упомянутое хранилище.
К счастью, в этом случае есть хранилище Github, которое https://github.com/docker-library/openjdk. Итак, я go в этот репозиторий и перехожу к Dockerfile моего указанного c изображения (https://github.com/docker-library/openjdk/blob/master/11/jdk/Dockerfile). Вверху этого файла я вижу следующую строку:
FROM buildpack-deps:stretch-scm
Итак, вопрос в том, почему buildpack-deps:stretch-scm
нигде не видно в выходных данных моей команды? Кроме того, я хочу знать, существует ли более простой способ определения базового изображения.