Code Monkey home page Code Monkey logo

containerization-seminar_5's Introduction

Контейнеризация (семинары)

Урок 5. Docker Compose и Docker Swarm

Информация о проекте

Задание:

  1. создать сервис, состоящий из 2 различных контейнеров: 1 - веб, 2 - БД
  2. далее необходимо создать 3 сервиса в каждом окружении (dev, prod, lab)
  3. по итогу на каждой ноде должно быть по 2 работающих контейнера
  4. выводы зафиксировать

Выполнение

Термины

Для того чтобы пользоваться swarm, надо запомнить несколько типов сущностей:

Node - это наши виртуальные машины, на которых установлен docker. Есть manager и workers ноды. Manager нода управляет workers нодами. Она отвечает за создание/обновление/удаление сервисов на workers, а также за их масштабирование и поддержку в требуемом состоянии. Workers ноды используются только для выполнения поставленных задач и не могут управлять кластером.

Stack - это набор сервисов, которые логически связаны между собой. По сути это набор сервисов, которые мы описываем в обычном compose файле. Части stack (services) могут располагаться как на одной ноде, так и на разных.

Service - это как раз то, из чего состоит stack. Service является описанием того, какие контейнеры будут создаваться. Если вы пользовались docker-compose.yaml, то уже знакомы с этой сущностью. Кроме стандартных полей docker в режиме swarm поддерживает ряд дополнительных, большинство из которых находятся внутри секции deploy.

Task - это непосредственно созданный контейнер, который docker создал на основе той информации, которую мы указали при описании service. Swarm будет следить за состоянием контейнера и при необходимости его перезапускать или перемещать на другую ноду.

Теоретическое выполнение: Первый вариант решение(без использования второй node):

Создаем два ДК-файла.

Компилируем node.

Проверяем.

Пытаемся задеплоить в Stack.

Получаем ошибку: "версия данного файла не поддерживается", продолжаем делать, как делали на семинаре. Запускаем первый ДК-файл.

Проверяем. Запускаем второй ДК-файл.

Воспользуемся функционалом Docker Swarm и создадим дубликат одного и того же образа.

Аналогично можем проделать с другими образами, далее повязать их сетью и получить полные дубликаты: БД + WEB.

Второй вариант решение(с использованием второй node):

Подключаемся по SSH ко второй VM и устанавливаем swarm соединение, предварительно инициализировав manager node.

Запускаем первый ДК-файл на manager node.

Проверяем. Запускаем второй ДК-файл на worker node.

Проверяем.

Попробуем запустить первый ДК-файл на node worker.

Проверяем, все работает, ошибки дублирования не произошло т. к имена image разные(ДК-файлы в разных директориях находятся на VM)

Запускаем на manager node второй ДК-файл и получаем четыре работающих контейнера на одной node и на другой (не считая hello-word).

Если бы расположение папок было идентично на manager node и worker node, пришлось бы создавать реплики образов и обвязывать их сетью.

Тем временем наблюдаем за статусом worker node, он "упал"(Отказался идти на повышение). Переподключаем swarm соединение.

Создаем еще реплики образов и видим как система их перераспределяет.

Для того чтобы сервисы распределять на определенные ноды необходимо применять labels (подробнее об этом тут: https://habr.com/ru/articles/659813/)

command for linux containerization command for linux containerization command for linux containerization command for linux containerization command for linux containerization command for linux containerization command for linux containerization command for linux containerization command for linux containerization command for linux containerization command for linux containerization command for linux containerization command for linux containerization command for linux containerization command for linux containerization command for linux containerization command for linux containerization command for linux containerization

containerization-seminar_5's People

Contributors

deletedone avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.