Files
SecondBrain/90 Library/Containers/Docker/Images, Dockerfile - Docker.md
T
2026-05-31 10:18:48 +03:00

3.4 KiB

status, type, tags, created, updated, aliases
status type tags created updated aliases
stable concept
devops
containerization
docker
2025-12-17 2026-05-07
Images, Dockerfile - Docker

Images, Dockerfile - Docker

Запуск контейнеров происходит на основе images (образов). Образы собираются с помощью Dockerfile.

Основные инструкции в Dockerfile:

  • FROM - использование базового образа 
  • RUN - выполнение команд и создание слоя образа
  • COPY - копирование в контейнер файлов и папок
  • ADD - аналогично COPY, но с распаковкой архивов

Дополнительные:

  • LABEL - описание метаданных
  • ENV - задание переменных среды
  • CMD - описание команд с аргументами для выполнения при запуске контейнера
  • WORKDIR - задание рабочей директории для следующей инструкции
  • ARG - задание переменных для передачи во время сборки
  • ENTRYPOINT - предоставление команды с аргументами для вызова во время выполнения контейнера
  • VOLUME - создание точки монтирования для работы с docker volume
  • EXPOSE - открытие порта в контейнере

Все эти команды создают отдельный слой (layer) для сборки контейнера

Оптимизация Образа

FROM ubuntu

RUN apt update
RUN apt install python3 -y
RUN apt install python3-dev -y
  • Сокращение инструкций RUN (уменьшение количества слоев)
FROM ubuntu

RUN apt update
RUN apt install python3 python3-dev -y

Docker будет пересобирать только те слои, которые были изменены

FROM ubuntu

RUN apt update && \
	apt install python3 python3-dev -y
  • Удаление кеша пакетных менеджеров
RUN apt update && \
	apt install python3 python3-dev -y \
	rm -rf /var/lib/apt/lists/*
  • Удаление файлов в той же инструкции, где их создавали
  • Инструкции, которые предположительно будут часто изменяться, ставить ниже остальных
  • Сокращение количество инструкций COPY
RUN apt update && \
	apt install python3 python3-dev -y \
	rm -rf /var/lib/apt/lists/*

COPY file1 file2 file3 ./dir
  • Использование легковесных базовых образов, где есть такая возможность

Связанные заметки

  • Environment Variables — инструкция ENV в Dockerfile устанавливает переменные окружения внутри контейнера; это расширение того же механизма Linux env vars
  • Volume - Docker — инструкция VOLUME в Dockerfile объявляет точки монтирования для Docker Volumes