Добавил:
eipimru
У меня есть канал с приколами: t.me/urmipies_garbage Подпишитесь пж-пж!!!!
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:3_лаба
.pdf
Министерство цифрового развития, связи и массовых коммуникаций
Российской Федерации Ордена Трудового Красного Знамени
федеральное государственное бюджетное образовательное учреждение
высшего образования
«Московский технический университет связи и информатики»
Кафедра Сетевые информационные технологии и сервисы
ПРАКТИЧЕСКАЯ РАБОТА №3
по дисциплине
"Программно-конфигурируемая архитектура приложений и
инфраструктуры"
Проверил:
Студент:СтудентычП.А.
Москва 2026

Содержание
Ход выполнения задания ......................................................... 3
Контрольные вопросы ............................................................. 6
2

Запущу adminer командой docker run -d -p 8080:8080 –name adminer
adminer
Ход выполнения задания
Рисунок1 — Запущенный adminer
Использую docker network для связи контейнеров. Запущу контейнер
со связью с db1 c помощью команды docker run -d -p 8080:8080 –link
db1:postgres –name adminer adminer
Рисунок2 — adminer c подключением к базе данных
3

Проверю, к какой сети подключён контейнер
Рисунок3 — Вывод сетевых параметров
Создам новую сеть, пересоздам контейнеры, подключив их к ней.
Рисунок4 — Создание контейнеров
Рисунок5 — Параметры контейнеров
4

Рисунок6 — Подключение по IP
Рисунок7 — Подключение используя имя контейнера
Рисунок8 — Отключение всех контейнеров
5

Контрольные вопросы
1.Как запустить что-то внутри работающего контейнера?
С помощью команды docker exec: docker exec -it /bin/bash
2.Как узнать, какие файлы изменяет программа внутри
контейнера?
docker di .
Она отобразит список файлов и директорий с пометками: A (добавлен),
C (изменен) или D (удален).
3.Когда происходит завершение контейнера? Как сделать?
Контейнер завершает свою работу, когда завершается главный
процесс, запущенный в нем (команда из CMD или ENTRYPOINT).
Если главный процесс завершается с ошибкой (код возврата
не 0), контейнер также останавливается.
Контейнер можно завершить принудительно с помощью stop
или kill
4.Перезапустите сборку собранного образа, оцените время
пересборки, объясните причины.
Время повторной сборки напрямую зависит от использования кэша
слоев.
Docker выполняет инструкции из Dockerle последовательно. Перед
выполнением каждой инструкции он проверяет, есть ли в кэше слой,
созданный этой же инструкцией ранее. Если есть — он использует его,
пропуская выполнение .
При первой сборке все слои создаются с нуля. При повторной
сборке, если инструкции и файлы, от которых они зависят, не менялись,
Docker использует закэшированные слои. Это экономит время, особенно на
6

операциях, требующих времени, таких как установка пакетов (apt-get, pip
install) .
5.К какому число слоев стремиться в образе, правила
оптимизации?
Стремиться к логическому, а не минимальному числу: Каждая
инструкция RUN, COPY, ADD создает новый слой . Слишком большое
количество слоев может незначительно увеличить время передачи образа.
Правила оптимизации:
Объединяйте связанные команды: Вместо нескольких RUN для
установки пакетов, их очистки и т.д., объединяйте их в один блок. Это не
только уменьшит количество слоев, но и, что важнее, позволит удалить
временные файлы (например, кэш пакетов) в том же слое, где они были
созданы, не увеличивая итоговый размер образа (вместо
RUN apt-get update
RUN apt-get install -y curl
RUN rm -rf /var/lib/apt/lists/* использовать
RUN apt-get update && apt-get install -y –no-install-recommends curl &&
rm -rf /var/lib/apt/lists*
6.Что такое Dockerle?
Dockerle — это текстовый файл, содержащий пошаговые инструкции
для автоматической сборки образа Docker.
7.Опишите базовые команды Dockerle, что они делают, где
FROM
смотреть документацию?
Задает базовый образ, с которого
начинается сборка.
7
FROM
python:3.12-slim

RUN
Выполняет команды во время сборки
RUN pip install -
COPY
ADD
WORKDIR
CMD
ENTRYPOINT
образа (например, установка пакетов).
Копирует файлы и папки из контекста
сборки на хосте внутрь образа.
Более «умная» версия COPY. Может
распаковывать локальные .tar-файлы и
скачивать файлы по URL.
Устанавливает рабочую директорию для
всех последующих инструкций
Задает команду, которая будет
выполняться при запуске контейнера.
Настраивает исполняемый файл, который
будет запускаться при старте контейнера.
r
requirements.txt
COPY . /app
ADD https://
example.com/
file.tar.gz /
tmp/
WORKDIR /app
CMD ["python",
"app.py"]
ENTRYPOINT
["top"]
ENV
ARG
Устанавливает переменные окружения
внутри образа.
Определяет переменную, которую можно
передать только на этапе сборки образа.
ENV
DEBUG_MODE=false
ARG
VERSION=latest
8.Что такое контекст сборки, как его оптимизировать?
Контекст сборки (build context) — это набор файлов и директорий,
которые отправляются Docker-демону при выполнении команды docker
build . Обычно контекстом является директория, в которой выполняется
команда (символ . в команде docker build .).
Как оптимизировать контекст сборки:
–Использовать .dockerignore. Это уменьшает размер контекста,
ускоряет его отправку демону и повышает эффективность
кэширования, так как изменение ненужных файлов не будет
сбрасывать кэш .
8

–Правильно структурировать проект: Например, если Dockerle
требует только скомпилированный бинарный файл, не включать в
контекст всю директорию с исходным кодом.
–Использовать –mount=type=bind: можно монтировать файлы или
директории из контекста непосредственно во время выполнения
RUN-команд, без копирования их в слой образа . Это позволяет,
например, временно подключать исходный код для компиляции, но
не сохранять его в финальном образе, что экономит место и ускоряет
сборку.
9
Соседние файлы в предмете Программно-конфигурируемая архитектура приложений и инфраструктуры
