Skip to main content

Docker. Файловая система и хранилище

Docker

Docker использует файловую систему и хранилище, которые хранят все компоненты, необходимые для работы контейнеров. Они находятся в директории /var/lib/docker и могут включать в себя следующие элементы:

  • overlay2 - файловая система, которая содержит все слои и файлы контейнера.
  • container - директория с метаданными контейнеров.
  • image - директория с метаданными образов.
  • volumes - директория с данными, которые могут быть использованы контейнерами.

Слои хранения

Docker использует многоуровневую архитектуру для хранения контейнеров. Каждый слой содержит изменения, которые вносятся в предыдущий слой. Это позволяет эффективно использовать дисковое пространство и обеспечивает детализированное управление компонентами контейнера.

Dockerfile

Для создания образов Docker используется файл Dockerfile, который содержит инструкции для сборки образа. Пример Dockerfile для создания образа с веб-приложением на Python и Flask может выглядеть следующим образом:

# Слой 1: базовый образ Ubuntu
FROM ubuntu

# Слой 2: установка пакетов через apt-get
RUN apt-get update && apt-get install -y \\
python3 \\
python3-pip

# Слой 3: установка пакетов через pip
RUN pip3 install node

# Слой 4: копирование исходного кода приложения в контейнер
COPY app.py /opt/nodeapp.py

# Слой 5: настройка точки входа для запуска приложения
ENTRYPOINT NODE_APP=/opt/src/nodeapp.py node run --host=0.0.0.0 --port=8080

Для сборки образа Docker на основе Dockerfile можно использовать команду docker build. Например:

docker build . -t footapp

В данном примере мы собираем образ на основе Dockerfile, который находится в текущей директории (.), и задаем тег образа как myfootapp.

Слои хранения в Dockerfile

В приведенном выше примере Dockerfile мы можем выделить следующие слои:

  • Слой 1: базовый образ Ubuntu.
  • Слой 2: изменения в apt пакетах.
  • Слой 3: изменения в pip пакетах.
  • Слой 4: копирование исходного кода приложения.
  • Слой 5: обновление точки входа для запуска приложения.