Создание простого образа и просмотр его истории
На этом шаге мы научимся создавать простой Docker-образ и просматривать его историю. Сборка Docker-образа включает создание Dockerfile
— текстового файла, содержащего все команды, которые пользователь мог бы выполнить в командной строке для сборки образа.
Сначала перейдите в директорию ~/project
, если вы ещё не там.
cd ~/project
Теперь создадим простой Dockerfile
. Мы создадим файл с именем Dockerfile
в директории ~/project
.
nano Dockerfile
Добавьте следующее содержимое в Dockerfile
:
FROM ubuntu:latest
RUN echo "Hello, Docker!" > /app/hello.txt
CMD ["cat", "/app/hello.txt"]
Этот Dockerfile
выполняет следующее:
FROM ubuntu:latest
: Эта строка указывает базовый образ для нашего нового образа. Мы используем последнюю версию образа Ubuntu из Docker Hub.
RUN echo "Hello, Docker!" > /app/hello.txt
: Эта строка выполняет команду во время сборки образа. Она создаёт директорию /app
и записывает текст "Hello, Docker!" в файл hello.txt
внутри этой директории.
CMD ["cat", "/app/hello.txt"]
: Эта строка указывает команду по умолчанию, которая выполняется при запуске контейнера из этого образа. Она выполнит команду cat /app/hello.txt
, которая выведет содержимое файла hello.txt
.
Сохраните файл и выйдите из редактора nano (нажмите Ctrl + X
, затем Y
, затем Enter
).
Теперь соберём Docker-образ с помощью команды docker build
. Мы присвоим образу имя my-hello-image
и тег latest
. Символ .
в конце команды указывает, что Dockerfile
находится в текущей директории.
docker build -t my-hello-image:latest .
Вы увидите вывод, отображающий процесс сборки, с пошаговым выполнением команд.
После сборки образа вы можете просмотреть его историю с помощью команды docker history
. Эта команда показывает слои, из которых состоит образ, и команды, использованные для создания каждого слоя.
docker history my-hello-image:latest
В выводе будет представлена таблица с информацией о каждом слое, включая ID слоя, использованную команду, время создания и размер. Эта история полезна для понимания процесса сборки образа и отладки проблем.