АрхангельскийМВ_БСТ2154_ПКАПИИ_ЛР3
.docx
М
инистерство
цифрового развития, Связи и Массовых
Коммуникаций Российской Федерации
Ордена Трудового Красного Знамени
федеральное государственное бюджетное образовательное
учреждение высшего образования
«Московский Технический Университет
Связи и Информатики» (МТУСИ)
Кафедра «Сетевые информационные технологии и сервисы»
Отчёт по лабораторной работе №3
по учебной дисциплине:
«Программно-конфигурируемая архитектура приложений и инфраструктуры»
на тему:
«Контейнер Adminer»»
Выполнил:
студент 5 курса группы БСТ2154
Архангельский Максим Вячеславович
Проверил: ст. преп.
Маклачкова Виктория Валентиновна
Москва 2025
Цель работы
Целью работы является освоение навыков по работе с контейнерами, взаимодействующими между собой, а также навыков по настройке сетей в Docker для организации взаимодействия между контейнерами.
Задание
Запустить контейнер с Adminer (веб-интерфейс для управления базами данных).
Настроить взаимодействие между контейнерами Adminer и PostgreSQL с использованием Docker-сетей.
Изучить и применить команды для создания и управления Docker-сетей.
Проверить работоспособность связки контейнеров, подключившись к базе данных через Adminer.
Оформить отчёт, приложить скриншоты выполнения и ответить на контрольные вопросы.
Ход выполнения работы
В разделе «Инструменты» → «Свойства» настраиваем проброс портов для доступа по SSH:
Протокол: TCP;
Хост-порт: например, 8080;
Порт гостя: 8080.
С
оздание
и настройка сети NAT
продемонстрированы на рисунке 1.
Рисунок 1 – Создание и настройка сети NAT
Запустим контейнер Adminer
Запускаем контейнер с Adminer показано на рисунке 2.
Рисунок 2 – Запуск контейнера с Adminer
Подключаемся веб-интерфейсу к Adminer продемонстрированы на рисунке 3.
Рисунок 3 – Веб-интерфейс для подключения к Adminer
Настроим взаимодействие между контейнерами Adminer и PostgreSQL с использованием Docker-сетей.
Запускаем новый контейнер Adminer с указанием связи показано на рисунке 4.
Рисунок 4 – Запуск нового контейнера Adminer с указанием связи
Подключимся к базе по ее Alias из контейнера Adminer продемонстрированы на рисунке 5.
Рисунок 5 – Попытка входа в Adminer
Успешный вход в Adminer показано на рисунке 6.
Рисунок 6 – Вход в Adminer
Изучим и применим команды для создания и управления Docker-сетей. Создаём и смотрим информацию в Docker-сети продемонстрированы на рисунке 7.
Рисунок 7 – Создание и просмотр информации Docker-сети
Проверяем сетевой настройки контейнера PostgreSQL показано на рисунке 8.
Рисунок 8 – Сетевые настройки контейнера PostgreSQL
Проверяем
Сетевые настройки контейнера Adminer продемонстрированы на рисунке 9.
Рисунок 9 – Сетевые настройки контейнера Adminer
Удаляем контейнер PostgreSQL и Adminer показано на рисунке 9.
Рисунок 10 – Удаление контейнеров PostgreSQL и Adminer
Создаём новые контейнеры PostgreSQL и Adminer с указанием сети и просмотр их сетевых настроек продемонстрированы на рисунке 11.
Рисунок 11 – Создание новых контейнеров PostgreSQL и Adminer
Проверим работоспособность связки контейнеров, подключившись к базе данных через Adminer.
Попытка входа в Adminer по IP-адресу показано на рисунке 12.
Рисунок 12 – Входа в Adminer по IP-адресу
Удачный вход в Adminer продемонстрированы на рисунке 13.
Рисунок 13 – Успешный вход в Adminer
Пытаемся подключиться по доменному имени показано на рисунке 14.
Рисунок 14 – Попытка входа в Adminer по домену
Удачный вход в Adminer продемонстрированы на рисунке 15.
Рисунок 15 – Успешный вход в Adminer
Ответы на контрольные вопросы
Как запустить что-то внутри работающего контейнера?
Например, для запуска оболочки Bash внутри контейнера:
docker exec -it имя_контейнера /bin/bash
Как узнать, какие файлы изменяет программа внутри контейнера?
docker diff имя_контейнера
Команда покажет список файлов, которые были изменены, удалены или добавлены в контейнере после его запуска.
Когда происходит завершение контейнера? Как сделать?
Контейнер завершает свою работу:
После завершения основного процесса внутри контейнера.
Вручную с помощью команды docker stop имя_контейнера
Принудительно завершить контейнер можно командой docker kill имя_контейнера
Перезапустите сборку собранного образа, оцените время пересборки, объясните причины.
При повторной сборке образа Docker использует кэш для слоев, которые не изменились. Если слои кэшированы, повторная сборка будет быстрой. Изменение слоев в верхней части Dockerfile приведет к тому, что последующие команды будут пересобираться, что увеличит время сборки.
К какому числу слоев стремиться в образе, правила оптимизации?
Рекомендуется минимизировать количество слоев, чтобы ускорить сборку и уменьшить размер образа.
Правила оптимизации:
Объединяйте команды в Dockerfile.
Очищайте ненужные пакеты сразу после установки.
Используйте .dockerignore, чтобы исключить лишние файлы из контекста сборки.
Что такое Dockerfile?
Dockerfile — это текстовый файл, содержащий инструкции для создания Docker-образа. Каждая команда в Dockerfile создает новый слой образа.
Опишите базовые команды Dockerfile, что они делают, где смотреть документацию?
FROM: Базовый образ.
RUN: Выполняет команду в процессе сборки образа.
CMD: Задает команду по умолчанию для выполнения при запуске контейнера.
COPY: Копирует файлы из контекста сборки в контейнер.
EXPOSE: Открывает порты.
WORKDIR: Устанавливает рабочую директорию внутри контейнера.
Документация доступна на официальном сайте Docker.
Что такое контекст сборки, как его оптимизировать?
Контекст сборки — это набор файлов и директорий, доступных для копирования в образ во время сборки.
Оптимизация:
Используйте файл .dockerignore, чтобы исключить ненужные файлы.
Минимизируйте размер контекста, чтобы ускорить передачу файлов на Docker-демон.
Заключение
В результате выполнения лабораторной работы были освоены навыки по работе с контейнерами, взаимодействующими между собой, а также навыки по настройке сетей в Docker для организации взаимодействия между контейнерами. На примере связки PostgreSQL и Adminer была реализована и проверена работа веб-интерфейса управления базой данных, обеспечен доступ к базе по IP-адресу и доменному имени.
