Ответ
Dockerfile — это сценарий сборки образа. После его создания следует процесс сборки образа и запуска контейнера.
Основные шаги:
-
Сборка Docker-образа Выполняется команда
docker build -t my-app:latest .- Docker Daemon читает инструкции из Dockerfile последовательно.
- Каждая инструкция (
FROM,RUN,COPY,ADD,WORKDIRи др.) создает новый слой образа. - Слои кэшируются для ускорения последующих сборок.
-
Запуск контейнера из образа Выполняется команда
docker run -d -p 8080:8080 my-app:latest- Docker создает изолированную среду выполнения (контейнер) на основе образа.
- Запускается процесс, указанный в
CMDилиENTRYPOINT.
Пример типичного Dockerfile для Java-приложения:
# 1. Базовый образ
FROM eclipse-temurin:17-jre-alpine
# 2. Метаданные (необязательно)
LABEL maintainer="dev@example.com"
# 3. Рабочая директория внутри контейнера
WORKDIR /app
# 4. Копирование артефакта сборки (JAR-файл)
COPY target/my-application.jar app.jar
# 5. Открытие порта (документация)
EXPOSE 8080
# 6. Команда запуска приложения
ENTRYPOINT ["java", "-jar", "app.jar"]
Последовательность команд для работы:
# Сборка образа с тегом
$ docker build -t my-java-app:1.0 .
# Просмотр собранных образов
$ docker images
# Запуск контейнера в фоновом режиме с пробросом порта
$ docker run -d --name my-app-container -p 8080:8080 my-java-app:1.0
# Проверка работающих контейнеров
$ docker ps
Собранный образ можно опубликовать в реестр (Docker Hub, GitLab Registry) командой docker push.