Добавил:
У меня есть канал с приколами: t.me/urmipies_garbage Подпишитесь пж-пж!!!! Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

3_лаба

.pdf
Скачиваний:
0
Добавлен:
02.09.2026
Размер:
273 Кб
Скачать
Министерство цифрового развития, связи и массовых коммуникаций
Российской Федерации Ордена Трудового Красного Знамени
федеральное государственное бюджетное образовательное учреждение
высшего образования
«Московский технический университет связи и информатики»
Кафедра Сетевые информационные технологии и сервисы
ПРАКТИЧЕСКАЯ РАБОТА №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 выполняет инструкции из Dockerle последовательно. Перед
выполнением каждой инструкции он проверяет, есть ли в кэше слой,
созданный этой же инструкцией ранее. Если есть — он использует его,
пропуская выполнение .
При первой сборке все слои создаются с нуля. При повторной
сборке, если инструкции и файлы, от которых они зависят, не менялись,
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.Что такое Dockerle?
Dockerle — это текстовый файл, содержащий пошаговые инструкции
для автоматической сборки образа Docker.
7.Опишите базовые команды Dockerle, что они делают, где
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
–Правильно структурировать проект: Например, если Dockerle
требует только скомпилированный бинарный файл, не включать в
контекст всю директорию с исходным кодом.
–Использовать –mount=type=bind: можно монтировать файлы или
директории из контекста непосредственно во время выполнения
RUN-команд, без копирования их в слой образа . Это позволяет,
например, временно подключать исходный код для компиляции, но
не сохранять его в финальном образе, что экономит место и ускоряет
сборку.
9
Соседние файлы в предмете Программно-конфигурируемая архитектура приложений и инфраструктуры