Краткий ответ: да , требуется предложение FROM. Но к этому выводу легче прийти, если немного подумать о процессе построения образа.
Dockerfile - это просто способ описать последовательность команд, которые должны быть выполнены подсистемой сборки Docker для создания образа. И изображение - это просто набор обычных файлов, в первую очередь пользовательских файлов определенного дистрибутива Linux, но, возможно, с некоторыми дополнительными файлами поверх него. Каждое изображение Docker основано на родительском изображении и добавляет свои собственные файлы в родительский набор. Каждое изображение должно начинаться с чего-то, т.е. указывать его родителя. И родитель всех родителей - это изображение scratch
, определенное как noop
, то есть пустой набор файлов.
Посмотрите на busybox
image:
FROM scratch
ADD busybox.tar.xz /
CMD ["sh"]
Он начинается с нуля, то есть с пустого набора файлов, и добавляет (т.е. копирует) к этому набору набор файлов из busybox.tar.xz
архива.
Теперь, если вы хотите создать свой собственный образ, вы можете начать с busybox
изображения и описать, какие файлы (и как) вы собираетесь добавить:
FROM busybox:latest
ADD myfile.txt /
Но каждыйвремя, когда новое изображение должно начинаться ОТ чего-то.