Развертывание приложений в Docker на SRV2-DT

Задание:

16) Развертывание приложений в Docker на SRV2-DT

  • a) Создайте локальный Docker Registry.
  • b) Напишите Dockerfile для приложения web.
    • 1. В качестве базового образа используйте nginx:alpine
    • 2. Содержание index.html
      • <html>
        	<body>
        		<center><h1><b>WEB</b></h1></center>
        	</body>
        </html>
    • 3. Соберите образ приложения web и загрузите его в ваш Registry.
      • i. Используйте номер версии 1.0 для вашего приложения
      • ii. Образ должен быть доступен для скачивания и дальнейшего запуска на локальной машине
  • c) Разверните Docker контейнер используя образ из локального Registry.
    • 1. Имя контейнера web
    • 2. Контейнер должно работать на порту 80
    • 3. Обеспечьте запуск контейнера после перезагрузки компьютера

Вариант реализации:

SRV2-DT:

  • Установим пакет для работы с Docker:
apt-get update && apt-get install -y docker-engine
  • Запускаем и добавляем в автозагрузку службу docker:
systemctl enable --now docker.service
  • Создаём и запускаем локальный Docker Registry:
    • поднимает контейнер Docker с именем DockerRegistry из образа registry:2. Контейнер будет слушать сетевые запросы на порту 5000, а параметр —restart=always позволит автоматически запускаться контейнеру после перезагрузки сервера.
docker run -d -p 5000:5000 --restart=always --name DockerRegistry registry:2
  • Проверяем:

  • Напишим Dockerfile для приложения web:
vim Dockerfile
    • содержимое, где:
      • FROM — задаёт базовый образ;
      • COPY — копирует с локального хоста в контейнер:

  • Создадит файл index.html:
vim index.html
    • содержимое по требованию задания:

  • Выполняем сборку docker-образа:
    • -t — позволяет присвоить имя собираемому образу;
    • «.» — говорит о том что Dockerfile находится в текущей директории откуда выполняется данная команда и имеет имя именно Dockerfile:
docker build -t web .
    • результат:

  • Проверяем:
    • наличие собранного образа

  • загружаем образ собранный из Dockerfile в локальной DockerRegistry:
    • присваиваем тег для размещения образа в локальном Docker Registry:
docker tag web localhost:5000/web:1.0
    • Загружаем образ в локальный Docker Registry:
docker push localhost:5000/web:1.0
      • Результат:

  • Проверяем:
    • наличие образа:

    • и возможность загрузки из локального Docker Registry:
      • перед — удаляем образы localhost:5000/web:1.0 и web:

      • загружаем образ приложения web из локального Docker Registry:

  • Запускаем docker-контейнер:
    • с именем web из образа localhost:5000/web:01
    • контейнер будет слушать сетевые запросы на порту 80, а параметр —restart=always позволит автоматически запускаться контейнеру после перезагрузки сервера
docker run -d -p 80:80 --restart=always --name web localhost:5000/web:1.0
  • Проверяем:
    • запущенный docker-контейнер:

    • доступ до веб-сервера и приложения