Информационные технологии – то, что пользуется огромным спросом в современном мире. Сегодня данная сфера стремительно развивается. Из-за этого разработчики и программисты получают уникальную возможность – совершенствоваться и создавать разнообразный уникальный софт, оснащенным мощным функционалом.
Некоторое время назад появилось совершенно новое понятие. Термин, о котором идет речь – docker. Не все понимают, что он собой представляет. Но для разработчиков и программистов соответствующий элемент играет важную роль.
В данной статье будет рассказано о том, что собой представляет соответствующий «контейнер», как он работает и пишется. В итоге каждый сможет понять, каким образом софт будет запускаться и за что отвечать. Предложенная информация полезна не только новичкам, но и тем, кто уже долгое время занят в соответствующей области.
Определение
Контейнер под названием Docker – это специальное программное обеспечение. Имеет открытый исходный код, благодаря чему может использоваться программерами и разрабами весьма активно. Задействуется при:
- разработке софта;
- запуске веб-утилит;
- доставки программ.
Все манипуляции осуществляются через среды, которые поддерживают так называются контейнеризацию.
Docker требуется для того, чтобы эффективно использовать разнообразные системы и их ресурсы, развертывать готовое ПО и его масштабирования. Данный контейнер гарантированно сохраняет стабильность работы утилиты при переносе в другие среды.
Немного истории
Docker Build – ПО, которое разрабатывается с 2008 года. Тогда о нем мало кто слышал. Тесты и совершенствование контента проводились в «закрытом пространстве».
В 2013 году Докер появился в Сети в качестве свободно распространяемого контейнера. Получил лицензию Apache 2.0. Часто о соответствующем контейнере слышат владельцы Linux. Для них Докер включили впервые в виде тестового программного обеспечения с дистрибутивом Red Hat Enterprise Linux. В 2017 году Docker стал более совершенным в плане коммерческого использования.
Сейчас контейнер работает в Линуксе с поддержкой cgroups и изоляции пространства имен. Для установки на других операционных системах требуется использовать специальное ПО типа Docker Machine и Kitematic.
Принцип работы
Docker Container работает по определенным принципам. Основное предназначение – контейнеризация программного обеспечения. Представлен некой визуализацией, позволяющей упаковывать софт по изолированным средам. Они носят название контейнеров.
Необходимо помнить, что соответствующие «элементы» функционируют в совершенно разных средах:
- локальные центры обработки данных;
- облака;
- персональные компьютеры;
- иные гаджеты.
Каждый контейнер имеет настройки и составляющие, необходимые для нормального функционирования задействованного приложения. Подобный прием позволяет одновременно запускать огромное количество контейнеров в пределах одного и того же хоста.
Сильные стороны
Docker Container – программное обеспечение для файловой системы или компьютера, обладающее определенным спектром сильных сторон. Принято выделять следующие преимущества «элемента»:
- Небольшое потребление ресурсов. «Блоки» не отвечают за виртуализацию всей операционной системы. Они используют только ядро хоста и изолируют задействованную утилиту на уровне процессов.
- Быстрое развертывание. Возможно использование готового базового образа на docker. Дополнительные компоненты не нужно задействовать. Пример – нет необходимости в постоянной установке и настройке from Ubuntu. Хватит одной инсталляции и создания образа. Далее из последнего будет осуществляться дальнейший запуск ПО. При необходимости пользователь может производить различные обновления.
- Удобство скрытия процессов. Контейнер предусматривает возможность использования разных методов обработки информации. Фоновые процессы скрываются с колоссальным успехом.
- Возможность работы с небезопасными кодами. Технологии изолирования дают возможность запуска любых кодификаций. Беспокоиться за последствия для операционной системы не придется.
- Легкое масштабирование. Любой проект без проблем расширяется путем внедрения новых контейнеров.
- Удобный запуск. Docker Run позволяет запускать внутри контейнера любое приложение в пределах хоста.
А еще данный компонент предусматривает оптимизацию файловой системы. Образ включает в себя слои, которые эффективно используют ОС и ее файловые компоненты.
Компоненты
Для тех, кто только начинает изучать docker, нужно знать определенные его составляющие и понятия. Особое внимание уделяют следующим терминам:
- Docker-daemon – контейнерный сервер, который входит в состав программных средств Докера. Управляет докер-объектами (сетью, образами, хранилищами, контейнерами). Связывается с другими демонами, чтобы осуществлять управление сервисами.
- CLI (клиент) – интерфейс пользовательского взаимодействия с Docker-демоном. Клиент и Демон – важнейшие компоненты «движка» Docker Engine. Клиент способен поддерживать связь сразу с несколькими демонами.
- Образ – файл, который включает зависимость, сведения, параметры, конфигурации и так далее для дальнейшеро развертывания и инициализации контейнеров.
- Файл – описание принципов и правил сборки образа. Там первая строчка отвечает за базовый образ. Остальные команды копируют файлы и установку приложений для создания среды разработки того или иного типа.
- Docker контейнер – исполняемый пакет ПО, который отличается легкостью и автономностью. Предусматривает все, что нужно для запуска утилиты. Выполнение кодификации возможно при наличии исходного кода, среды обработки, системных инструментов, настроек и библиотек.
- Volume (том) – процедура эмуляции файловой системы для дальнейшего осуществления операций чтения и записи. Автоматически создается контейнером.
- Реестр – сервер, который был заранее зарезервирован. Используется для того, чтобы хранить docker-образы.
- Хаб – репозиторий, хранилище информации. Предназначается для хранения образов с разным ПО. Если есть готовые элементы, утилита будет разрабатываться быстрее.
- Хост – виртуальные машины (среды), задействованные для запуска контейнеров с ПО.
- Сети – некие компоненты, применяемые для организации сетевых интерфейсов в пределах утилит контейнерного характера.
Вот несколько примеров Docker-registry:
- Центр Докер – реестр, который используется для подгрузки docker-image. Отвечает за обеспечение и размещение оных, а также интеграцию GitHub и BitBucket.
- Контейнеры Azure. Используются для работы с образами и их компонентами в директориях Azure.
- Доверенный реестр Докер (DTR) – служба docker-реестра. Используется для установки на локальном компьютере или сети корпорации.
После того, как пользователь разобрался с терминологией и понял, что такое docker hub и другие контейнерные элементы, можно рассмотреть другие важные аспекты тематики.
Движок
Перед тем, как устанавливать Докер и активно пользоваться им, стоит учесть, что собой представляет Docker Engine. Так называют ядро механизма рассматриваемого контейнера.
Движок будет отвечать за функционирование и обеспечение связей с основными докер-объектами. К ним относят образы, контейнеры и реестры.
У этого движка есть определенные элементы:
- Сервер. Должен отвечать за выполнение инициализации демона (так можно назвать фоновую программу), который задействован для управления и корректировки контейнеров, томов, образов.
- REST API. Добавляет функции взаимодействия клиента с демоном. Представлен своеобразным программным механизмом.
- Клиент. Позволяет выполнять юзерам различные действия с серверами. Для реализации поставленной задачи используются команды. Они набираются программером или человеком через интерфейс CLI.
Без движка освоить рассматриваемый элемент не получится. Начать изучение Докера рекомендуется именно с «ядра».
Как работает «утилита»
Пользователи, решившие освоить Docker, должны в большинстве случаев разбираться в информатике и программировании. А еще им предстоит выяснить, какие принципы и схемы работы доступны каждому.
Базируется работа Докера на принципе клиент-серверной архитектуры. Она опирается на взаимодействие клиентов с веб-серверами (хостами). Первый будет отправлять запросы на получение информации, второй – отвечать на них и производить отправку.
Схема
Теперь важно рассмотреть схему работы изучаемого механизма. На самом деле все не так трудно для понимания. Докер Build работает так:
- Пользователь через клиентский интерфейс отдает команды демону. Последний развернут заранее на хосте.
- Опираясь на команду, которая задается клиентом, происходит выполнение операций с образами. Манипулятором является демон. В основе лежат инструкции и указания, прописанные в Dockerfile. Пример – автоматическая сборка оных осуществляется через «докер built» (все на английском).
- Происходит работа образа, расположенного в контейнере.
Пример работы образа: запуск docker-image через docker run (команду) или удаление контейнера при помощи docker kill.
Образ
Вбить команду docker и смотреть, как она реализуется – недостаточно для нормального понимания контейнирования. Образы в этой системе – некие шаблоны, предназначенные для чтения (и только для него). Имеют определенные инструкции для формирования «блока хранения». Состоит из слоев, скомбинированных Докером в единый образ через вспомогательные файловые системы UnionFS. Это помогает избавиться от нерациональности при использовании дисковой памяти.
Параметры образа прописываются в Dockerfile. Чтобы много раз применять Image, требуется использование реестра образов или doker-registry. Они позволяют заканчивать готовые образы с внешних депозиториев сервисов и хранить их в реестре хоста. Лучше всего задействовать официальные реестры компании Docker Trusted Registry.
Тут уместны комментарии, которые дают опытные разработчики. Когда нужно получить файл, скачивать рекомендуется только необходимые слои. Если программер захотел доработать софт и модифицировать образ, останется внести корректировки только в желаемые файлы. После того, как произойдет загрузка только тех слоев на сервер, которые обладают модификациями.
Контейнеры
Docker работает комплексно. Чтобы понимать, какие изменения происходят в процессе реализации «пакета», важно рассматривать каждую его составляющую. Containers базируется на основе образов. Они запускаются из ядра Linux напрямую. Это позволяет рационально использовать ресурсы компьютера или иного задействованного устройства.
Процесс работы контейнеров типа Docker проводится так:
- Определяются «блоки хранения».
- Для каждого изолированного пространства создается уникальное поле имен.
- Имена отвечают за обеспечение доступа к контейнерам.
- Ограничения на процессы внутри «элемента» устанавливаются за счет технологии namespace.
В случае с движком используются иные технологии. Они называются «контрольными группами» — cgroups. Приложение просто ограничивается набором ресурсов. Контрольные группы отвечают за обмен аппаратных возможностей с контейнерами, на которые дополнительно инициализируются те или иные ограничения (права доступа, использование памяти и так далее).
Движки Docker объединяют пространства имен, контрольные группы и файловые системы UnionFS, выдавая в конечном итоге формат контейнера. Далее создатели рассматриваемой сферы планируют внедрить поддержку иных форматов через интеграцию BSD Jails или Solaris Zones.
Процесс при запуске контейнеров
Не совсем понятно, что произойдет, если мы запустим контейнер. Можно провести элементарный тест (только опытными программерами) и посмотреть поэтапно за выполняемыми операциями.
Алгоритм в container будет осуществляться следующим образом:
- Запускается Docker образ.
- Движок проверяет существование оного. Если он локальный, используется для создания нового контейнера. В противном случае производится загрузка с Docker Hub.
- Создается контейнер из образа.
- Файловая система получает разметку.
- Добавляются слои записи.
- Создается сетевой интерфейс.
- Ищется и присваивается IP-адрес.
- Осуществляется запуск указанного процесса.
- Происходит захват ввода и вывода приложения.
С помощью команды того или иного типа пользователь сможет осуществлять управление Docker. Главное знать, какие именно операции прописывать. Но для управления может быть задействован иной элемент.
Compose
Речь идет о таком компоненте как Docker Compose. Созданный нами контейнер управляется командами. А их группы – специальным пакетным менеджером. Это и есть Compose.
Не пользуется большим спросом. Пользователю проще работать с командами через интерфейс и командную строку. Но иногда его задействование является обоснованным.
Docker Compose – это менеджер, который используется при создании сложных программ и утилит с большим количеством процессов и сервисов. Для «обычного» софта предпочтительно задействовать «обычный докер».
Swarm
Swarm – утилита, которая сохранит хосты в единый кластер. Host, который входит в состав приложения, называется узлом (node). Он бывает двух типов: управляющим и рабочим. Стоит обратить внимание на то, что кластер может иметь только один управляющий «узел».
Docker Swarm – довольно простое программное обеспечение. Им сможет пользоваться даже новичок.
Что умеет
Софт, описанный выше, обладает определенным спектром возможностей:
- Управление характеристиками нагрузки. Здесь проводится оптимизация рассылки запросов между хостами. Обеспечивается равномерное распределение нагрузки.
- Динамическое управление. Позволяет добавлять в builds swarm-кластера новых составляющих. Перезапуск оных не требуется.
- Масштабирование. Отвечает за creating и deleting докер-образов. Они используются при автоматическом создании контейнеров в будущем.
- Восстановление «узлов» после сбоев и ошибок. Работоспособность каждого host все время находится под контролем управляющего. Если кластер дает сбой, начинается его восстановление с дальнейшим перезапуском.
Это основные принципы работы докера сварм. Есть также функция Rolling-update. Отвечает за обновление контейнеров. Процесс осуществляется в определенной последовательности и с задержками для запуска других «пространств хранения». Параметры прописываются в настройках. При сбое обновления выводится ошибка. Процедура начинается с самого начала.
Создать образ докера и пользоваться контейнированием можно на любой операционной системе, включая Windows. Всего существуют две сборки:
- Community Edition (бесплатная версия);
- Enterprise Edition (платная).
Среди наиболее популярных «разработок» докеров выделяют первый вариант. Он отлично подойдет новичкам. Во втором есть дополнительные функции.
Для инициализации Docker Build и его компонентов требуется:
- Перейти по ссылке и выбрать ОС.
- Запустить файл.
- Следовать указаниям мастера установки.
Для проверки, какой building инициализирован (и установлен ли он вообще), сделаем следующее (на примере Windows 10):
- Вызвать командную строку.
- Написать в появившемся поле docker.
- ��ажать на «Выполнить».
Если все нормально, появится окно, в котором прописана информация о докере. Теперь в качестве теста требуется удостовериться в доступности Docker Compose. Для этого выполняется команда «docker-compose».
Внимание: при использовании linux «композ» устанавливается отдельно.
DokerFile – это
ДокерФайл – это не просто документ с параметрами контейнера. На любом сайте или облаке можно поделиться задействованной средой. Той, в которой запускался код. Это помогает при воспроизведении на различных машинах.
Dockerfile – документ конфигурации, который описывает пошаговое создание среды (created file) утилиты разработчика. Здесь описываются:
- команды;
- образы;
- настройки.
Именно «докерфайл» обрабатывается движком, который отвечает за создание образов.
Создание
Для того, чтобы пользоваться Докером, требуется создать Dockerfile. Обычно образы create автоматически. Но есть и ручное создание.
Чтобы им воспользоваться, необходимо задействовать команду docker commit. А для автоматизации процесса, как было сказано выше, используется build.
Команды
В процессе использования Докеров разработчику предстоит пользоваться разнообразными командами. Вот несколько из них:
- docker create -t -i eon01/infinite —name infinite – создание контейнера;
- docker run -it —name infinite -d eon01/infinite – первый запуск;
- docker rename infinite infinity – переименование;
- docker rm infinite – удаление;
- run apt-get – запуск;
- docker ps – вывод запущенных контейнеров;
- apt-get install – инициализация.
Внимание: если требуется загрузить докер-образы из регистров, нужно использовать утилиту docker pull.
Созданием docker контейнеров занимаются именно разработчики. Обычные пользователи не имеют доступа к подобным возможностям. Перечисленных операций новичкам хватит. Если посетить этот адрес, можно увидеть все команды для Докера.
Как применяются
Чтобы поставить точку в выбранной области, важно не только хорошо разобраться в Docker. А еще и понять, каким образом их используют. Вот несколько примеров тестирования и задействования, которые помогут разобраться в ситуации:
- Доставка приложений с высокой скоростью (команды build и push). Отвечает за организацию коллективной работы над проектом. Программеры смогут работать удаленно на локальных компьютерах. Фрагменты кода пересылаются контейнерами для тестов.
- Развертывание и масштабирование. Каждый «блок» работоспособен на локальных ПК, серверах, облаках. Загружаются на порт (хостинг) для тестирования. После позволяют создавать (run), останавливать (stop) и запускать (start), а также возобновлять остановленные контейнеры (pause/unpause).
- Множественные нагрузки. Это – запуск большого количества «блоков» на одном и том же устройстве. Достигается за счет «легкости» Докеров.
- Диспетчер процессов. Позволяет отслеживать процессы в Docker через ps и top.
- Поиск с максимальным комфортом. Для реализации поставленной задачи используется search.
Докер работает стабильно, предусматривает обновления и защиту от сбоев. И пользоваться ими не так трудно. Синтаксис этого «элемента» подвластен даже новичкам.
Как разбираться в Докере
Если посмотреть на Докер поверхностно, создастся впечатление, что освоить данную область трудно. На самом деле это не так.
Многие разработчики при помощи самообразования разобрались в том, каким образом работает Докер. В сети полно сопутствующей литературы и туториалов. Но для более быстрого и надежного решения рекомендуется закончить специализированные курсы. Они есть и очные, и дистанционные. Например, прокачать навыки администрирования Linux на базовом и продвинутом уровне можно в OTUS.
Отдельный модуль по работе с Докером есть и на курсе «DevOps-практики и инструменты»:
<!DOCTYPE html>
<html dir="ltr" lang="ru-RU">
<head>
<meta charset="UTF-8" />
<meta http-equiv="x-ua-compatible" content="ie=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="profile" href="http://gmpg.org/xfn/11" />
<title>Docker – определение, создание, использование OTUS</title>
<!-- All in One SEO 4.5.2.1 - aioseo.com -->
<meta name="description" content="Информационные технологии – то, что пользуется огромным спросом в современном мире. Сегодня данная сфера стремительно развивается. Из-за этого разработчики и программисты получают уникальную возможность – совершенствоваться и создавать разнообразный уникальный софт, оснащенным мощным функционалом. Некоторое время назад появилось совершенно новое понятие. Термин, о котором идет речь – docker. Не все понимают, что он собой представляет." />
<meta name="robots" content="max-image-preview:large" />
<link rel="canonical" href="https://otus.ru/journal/docker-opredelenie-sozdanie-ispolzovanie/" />
<meta name="generator" content="All in One SEO (AIOSEO) 4.5.2.1" />
<script type="application/ld+json" class="aioseo-schema">
{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/otus.ru\/journal\/docker-opredelenie-sozdanie-ispolzovanie\/#article","name":"Docker \u2013 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435, \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 OTUS","headline":"Docker \u2013 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435, \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435","author":{"@id":"https:\/\/otus.ru\/journal\/author\/a-pavlenko\/#author"},"publisher":{"@id":"https:\/\/otus.ru\/journal\/#organization"},"image":{"@type":"ImageObject","url":"https:\/\/otus.ru\/journal\/wp-content\/uploads\/2021\/09\/oj-1080x720-6.png","width":1080,"height":720},"datePublished":"2021-09-24T18:50:50+00:00","dateModified":"2021-11-18T12:29:25+00:00","inLanguage":"ru-RU","mainEntityOfPage":{"@id":"https:\/\/otus.ru\/journal\/docker-opredelenie-sozdanie-ispolzovanie\/#webpage"},"isPartOf":{"@id":"https:\/\/otus.ru\/journal\/docker-opredelenie-sozdanie-ispolzovanie\/#webpage"},"articleSection":"\u041f\u043e\u043b\u0435\u0437\u043d\u043e\u0435, devops, Docker, Linux, \u041b\u0438\u043d\u0443\u043a\u0441"},{"@type":"BreadcrumbList","@id":"https:\/\/otus.ru\/journal\/docker-opredelenie-sozdanie-ispolzovanie\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/otus.ru\/journal\/#listItem","position":1,"name":"\u0413\u043b\u0430\u0432\u043d\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430","item":"https:\/\/otus.ru\/journal\/","nextItem":"https:\/\/otus.ru\/journal\/docker-opredelenie-sozdanie-ispolzovanie\/#listItem"},{"@type":"ListItem","@id":"https:\/\/otus.ru\/journal\/docker-opredelenie-sozdanie-ispolzovanie\/#listItem","position":2,"name":"Docker \u2013 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435, \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435","previousItem":"https:\/\/otus.ru\/journal\/#listItem"}]},{"@type":"Organization","@id":"https:\/\/otus.ru\/journal\/#organization","name":"\u041e\u0442\u0443\u0441 \u043e\u043d\u043b\u0430\u0439\u043d-\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435","url":"https:\/\/otus.ru\/journal\/","sameAs":["https:\/\/www.youtube.com\/channel\/UCetgtvy93o3i3CvyGXKFU3g"],"contactPoint":{"@type":"ContactPoint","telephone":"+74999389202","contactType":"Customer Support"}},{"@type":"Person","@id":"https:\/\/otus.ru\/journal\/author\/a-pavlenko\/#author","url":"https:\/\/otus.ru\/journal\/author\/a-pavlenko\/","name":"A. Pavlenko","image":{"@type":"ImageObject","@id":"https:\/\/otus.ru\/journal\/docker-opredelenie-sozdanie-ispolzovanie\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/d4c499a104d7c2522fa41f89e6819499?s=96&d=mm&r=g","width":96,"height":96,"caption":"A. Pavlenko"}},{"@type":"WebPage","@id":"https:\/\/otus.ru\/journal\/docker-opredelenie-sozdanie-ispolzovanie\/#webpage","url":"https:\/\/otus.ru\/journal\/docker-opredelenie-sozdanie-ispolzovanie\/","name":"Docker \u2013 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435, \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 OTUS","description":"\u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438 \u2013 \u0442\u043e, \u0447\u0442\u043e \u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043e\u0433\u0440\u043e\u043c\u043d\u044b\u043c \u0441\u043f\u0440\u043e\u0441\u043e\u043c \u0432 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u043c \u043c\u0438\u0440\u0435. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u0434\u0430\u043d\u043d\u0430\u044f \u0441\u0444\u0435\u0440\u0430 \u0441\u0442\u0440\u0435\u043c\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0435\u0442\u0441\u044f. \u0418\u0437-\u0437\u0430 \u044d\u0442\u043e\u0433\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u044e\u0442 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u0443\u044e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u2013 \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0438 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u043d\u043e\u043e\u0431\u0440\u0430\u0437\u043d\u044b\u0439 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u043e\u0444\u0442, \u043e\u0441\u043d\u0430\u0449\u0435\u043d\u043d\u044b\u043c \u043c\u043e\u0449\u043d\u044b\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u043e\u043c. \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043d\u0430\u0437\u0430\u0434 \u043f\u043e\u044f\u0432\u0438\u043b\u043e\u0441\u044c \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u043d\u043e\u0432\u043e\u0435 \u043f\u043e\u043d\u044f\u0442\u0438\u0435. \u0422\u0435\u0440\u043c\u0438\u043d, \u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0438\u0434\u0435\u0442 \u0440\u0435\u0447\u044c \u2013 docker. \u041d\u0435 \u0432\u0441\u0435 \u043f\u043e\u043d\u0438\u043c\u0430\u044e\u0442, \u0447\u0442\u043e \u043e\u043d \u0441\u043e\u0431\u043e\u0439 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442.","inLanguage":"ru-RU","isPartOf":{"@id":"https:\/\/otus.ru\/journal\/#website"},"breadcrumb":{"@id":"https:\/\/otus.ru\/journal\/docker-opredelenie-sozdanie-ispolzovanie\/#breadcrumblist"},"author":{"@id":"https:\/\/otus.ru\/journal\/author\/a-pavlenko\/#author"},"creator":{"@id":"https:\/\/otus.ru\/journal\/author\/a-pavlenko\/#author"},"image":{"@type":"ImageObject","url":"https:\/\/otus.ru\/journal\/wp-content\/uploads\/2021\/09\/oj-1080x720-6.png","@id":"https:\/\/otus.ru\/journal\/docker-opredelenie-sozdanie-ispolzovanie\/#mainImage","width":1080,"height":720},"primaryImageOfPage":{"@id":"https:\/\/otus.ru\/journal\/docker-opredelenie-sozdanie-ispolzovanie\/#mainImage"},"datePublished":"2021-09-24T18:50:50+00:00","dateModified":"2021-11-18T12:29:25+00:00"},{"@type":"WebSite","@id":"https:\/\/otus.ru\/journal\/#website","url":"https:\/\/otus.ru\/journal\/","name":"OTUS JOURNAL","description":"Blog about IT","inLanguage":"ru-RU","publisher":{"@id":"https:\/\/otus.ru\/journal\/#organization"}}]}
</script>
<!-- All in One SEO -->
<link rel='dns-prefetch' href='//otus.ru' />
<link rel='dns-prefetch' href='//fonts.googleapis.com' />
<link rel='stylesheet' id='wp-block-library-css' href='https://otus.ru/journal/wp-includes/css/dist/block-library/style.min.css?ver=6.4.7' type='text/css' media='all' />
<style id='classic-theme-styles-inline-css' type='text/css'>
/*! This file is auto-generated */
.wp-block-button__link{color:#fff;background-color:#32373c;border-radius:9999px;box-shadow:none;text-decoration:none;padding:calc(.667em + 2px) calc(1.333em + 2px);font-size:1.125em}.wp-block-file__button{background:#32373c;color:#fff;text-decoration:none}
</style>
<style id='global-styles-inline-css' type='text/css'>
body{--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #ffffff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgba(6,147,227,1) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgba(252,185,0,1) 0%,rgba(255,105,0,1) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgba(255,105,0,1) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: 13px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 36px;--wp--preset--font-size--x-large: 42px;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgba(255, 255, 255, 1), 6px 6px rgba(0, 0, 0, 1);--wp--preset--shadow--crisp: 6px 6px 0px rgba(0, 0, 0, 1);}:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flow > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-flow > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-flow > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-constrained > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-constrained > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignwide{max-width: var(--wp--style--global--wide-size);}body .is-layout-flex{display: flex;}body .is-layout-flex{flex-wrap: wrap;align-items: center;}body .is-layout-flex > *{margin: 0;}body .is-layout-grid{display: grid;}body .is-layout-grid > *{margin: 0;}:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;}
.wp-block-navigation a:where(:not(.wp-element-button)){color: inherit;}
:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}
:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}
.wp-block-pullquote{font-size: 1.5em;line-height: 1.6;}
</style>
<link rel='stylesheet' id='wbcr-comments-plus-url-span-css' href='https://otus.ru/journal/wp-content/plugins/clearfy/components/comments-plus/assets/css/url-span.css?ver=2.2.0' type='text/css' media='all' />
<link rel='stylesheet' id='wpel-style-css' href='https://otus.ru/journal/wp-content/plugins/wp-external-links/public/css/wpel.css?ver=2.59' type='text/css' media='all' />
<link rel='stylesheet' id='ez-toc-css' href='https://otus.ru/journal/wp-content/plugins/easy-table-of-contents/assets/css/screen.min.css?ver=2.0.61' type='text/css' media='all' />
<style id='ez-toc-inline-css' type='text/css'>
div#ez-toc-container .ez-toc-title {font-size: 120%;}div#ez-toc-container .ez-toc-title {font-weight: 500;}div#ez-toc-container ul li {font-size: 95%;}div#ez-toc-container nav ul ul li {font-size: 90%;}
.ez-toc-container-direction {direction: ltr;}.ez-toc-counter ul{counter-reset: item ;}.ez-toc-counter nav ul li a::before {content: counters(item, ".", decimal) ". ";display: inline-block;counter-increment: item;flex-grow: 0;flex-shrink: 0;margin-right: .2em; float: left; }.ez-toc-widget-direction {direction: ltr;}.ez-toc-widget-container ul{counter-reset: item ;}.ez-toc-widget-container nav ul li a::before {content: counters(item, ".", decimal) ". ";display: inline-block;counter-increment: item;flex-grow: 0;flex-shrink: 0;margin-right: .2em; float: left; }
</style>
<link rel='stylesheet' id='contentberg-fonts-css' href='https://fonts.googleapis.com/css?family=Roboto%3A400%2C500%2C700%7CPT+Serif%3A400%2C400i%2C600%7CIBM+Plex+Serif%3A500' type='text/css' media='all' />
<link rel='stylesheet' id='contentberg-core-css' href='https://otus.ru/journal/wp-content/themes/contentberg/style.css?ver=1.8.3' type='text/css' media='all' />
<link rel='stylesheet' id='contentberg-lightbox-css' href='https://otus.ru/journal/wp-content/themes/contentberg/css/lightbox.css?ver=1.8.3' type='text/css' media='all' />
<link rel='stylesheet' id='font-awesome-css' href='https://otus.ru/journal/wp-content/themes/contentberg/css/fontawesome/css/font-awesome.min.css?ver=1.8.3' type='text/css' media='all' />
<script type="text/javascript" id="breeze-prefetch-js-extra">
/* <![CDATA[ */
var breeze_prefetch = {"local_url":"https:\/\/otus.ru\/journal","ignore_remote_prefetch":"1","ignore_list":["\/wp-admin\/"]};
/* ]]> */
</script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/plugins/breeze/assets/js/js-front-end/breeze-prefetch-links.min.js" id="breeze-prefetch-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-includes/js/jquery/jquery.min.js" id="jquery-core-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-includes/js/jquery/jquery-migrate.min.js" id="jquery-migrate-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/lazysizes.js" id="lazysizes-js"></script>
<link rel="https://api.w.org/" href="https://otus.ru/journal/wp-json/" /><link rel="alternate" type="application/json" href="https://otus.ru/journal/wp-json/wp/v2/posts/2046" /><link rel='shortlink' href='https://otus.ru/journal/?p=2046' />
<link rel="alternate" type="application/json+oembed" href="https://otus.ru/journal/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fotus.ru%2Fjournal%2Fdocker-opredelenie-sozdanie-ispolzovanie%2F" />
<link rel="alternate" type="text/xml+oembed" href="https://otus.ru/journal/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fotus.ru%2Fjournal%2Fdocker-opredelenie-sozdanie-ispolzovanie%2F&format=xml" />
<script>var Sphere_Plugin = {"ajaxurl":"https:\/\/otus.ru\/journal\/wp-admin\/admin-ajax.php"};</script><link rel="icon" href="https://otus.ru/journal/wp-content/uploads/2020/11/cropped-OTUS_logo_OTUS-COMP-LOGO-WHITE-1-32x32.png" sizes="32x32" />
<link rel="icon" href="https://otus.ru/journal/wp-content/uploads/2020/11/cropped-OTUS_logo_OTUS-COMP-LOGO-WHITE-1-192x192.png" sizes="192x192" />
<link rel="apple-touch-icon" href="https://otus.ru/journal/wp-content/uploads/2020/11/cropped-OTUS_logo_OTUS-COMP-LOGO-WHITE-1-180x180.png" />
<meta name="msapplication-TileImage" content="https://otus.ru/journal/wp-content/uploads/2020/11/cropped-OTUS_logo_OTUS-COMP-LOGO-WHITE-1-270x270.png" />
<style type="text/css" id="wp-custom-css">
#menu-item-10406 .wpel-icon {
display: none;
}
#menu-item-10407 .wpel-icon {
display: none;
}
.otus-login-site a .wpel-icon {
display: none;
}
.menu-menju-navykov-container a .wpel-icon {
display: none;
}
.otus-login-site a
{
background: #ffd709;
border-radius: 12px;
color: #0f0f10;
font-size: 14px;
font-weight: 700;
line-height: 20px;
display: block;
text-align: center;
padding: 8px 25px;
}
.main-footer.dark {
background: linear-gradient(90deg, #a64fc5, #4f54e6);
border-color: transparent;
}
.main-footer.bold .copyright {
color: #fff;
}
.main-footer.bold .to-top i {
color: #fff;
}
.main-footer.bold .back-to-top {
color: #fff;
}
.nav__scroll {
overflow-x: auto;
-webkit-overflow-scrolling: touch;
}
.scrollable-menu .menu {
display: flex;
}
.nav__scroll
{
background: linear-gradient(90deg, #a64fc5, #4f54e6);
}
.scrollable-menu .menu .menu-item {
flex: 0 0 auto;
padding: 15px 15px;
}
.scrollable-menu .menu .menu-item a {
color: #fff;
}
.nav__scroll::-webkit-scrollbar{background-color:#fff;height:5px;}
.nav__scroll::-webkit-scrollbar-thumb{background-color:#dcdcdc;}
.nav__scroll::-webkit-scrollbar-track{-webkit-border-radius:0;border-radius:0;background-color:#fff;}/
body {
min-width: 320px;
}
.banner-click img {
margin: 0 auto;
display: block;
}
.banner-click {
cursor: pointer;
}
.banner-footer-area {
margin-bottom: 20px;
}
.banner-left-area {
margin-top: 40px;
} </style>
<!--Start VDZ Yandex Metrika Plugin-->
<!-- Yandex.Metrika counter --><script type="text/javascript" >(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};m[i].l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})(window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");ym(34531570, "init", {clickmap:true, trackLinks:true, accurateTrackBounce:true, webvisor:true, trackHash:true, ecommerce:"dataLayer"});</script>
<noscript><div><img src="https://mc.yandex.ru/watch/34531570" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
<!-- /Yandex.Metrika counter --><!--START ADD EVENTS FROM CF7--><script type='text/javascript'>document.addEventListener( 'wpcf7submit', function( event ) {
//event.detail.contactFormId;
if(ym){
//console.log(event.detail);
ym(34531570, 'reachGoal', 'VDZ_SEND_CONTACT_FORM_7');
ym(34531570, 'params', {
page_url: window.location.href,
status: event.detail.status,
locale: event.detail.contactFormLocale,
form_id: event.detail.contactFormId,
});
}
}, false );
</script><!--END ADD EVENTS FROM CF7-->
<!--End VDZ Yandex Metrika Plugin-->
</head>
<body class="post-template-default single single-post postid-2046 single-format-standard right-sidebar lazy-normal has-lb">
<div class="main-wrap">
<header id="main-head" class="main-head head-nav-below has-search-modal simple simple-boxed">
<div class="inner inner-head" data-sticky-bar="0">
<div class="wrap cf wrap-head">
<div class="left-contain">
<span class="mobile-nav"><i class="fa fa-bars"></i></span>
<div class="title">
<a href="https://otus.ru/journal/" title="OTUS JOURNAL" rel="home" data-wpel-link="internal">
<span class="text-logo"><img src="/journal/wp-content/themes/contentberg/img/logo_site.svg" alt="OTUS JOURNAL"></span>
</a>
</div>
</div>
<div class="navigation-wrap inline">
<nav class="navigation inline simple light" data-sticky-bar="0">
<div class="menu-rubriki-container"><ul id="menu-rubriki" class="menu"><li id="menu-item-109" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-cat-1 menu-item-109"><a href="https://otus.ru/journal/category/pro-it/" data-wpel-link="internal"><span>Про IT</span></a></li>
<li id="menu-item-113" class="menu-item menu-item-type-taxonomy menu-item-object-category current-post-ancestor current-menu-parent current-post-parent menu-cat-4 menu-item-113"><a href="https://otus.ru/journal/category/polza/" data-wpel-link="internal"><span>Полезное</span></a></li>
<li id="menu-item-114" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-cat-3 menu-item-114"><a href="https://otus.ru/journal/category/lifestyle/" data-wpel-link="internal"><span>Лайфстайл</span></a></li>
<li id="menu-item-10406" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10406"><a href="https://otus.ru/catalog/courses" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right"><span>Обучение</span><span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10407" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10407"><a href="https://otus.ru/about" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right"><span>Информация</span><span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
</ul></div> </nav>
</div>
<div class="actions">
<div class="otus-login-site">
<a href="https://otus.ru/login/" target="_blank" data-wpel-link="external" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Войти<span class="wpel-icon wpel-image wpel-icon-6"></span></a>
</div>
<a href="#" title="Search" class="search-link"><i class="fa fa-search"></i></a>
</div>
</div>
</div>
</header> <!-- .main-head -->
<div class="nav nav_disable nav_colored nav_transparent course-categories__nav nav__scroll ">
<div class="container wrap">
<div class="links inline simple light scrollable-menu">
<div class="menu-menju-navykov-container"><ul id="menu-menju-navykov" class="menu"><li id="menu-item-10413" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10413"><a href="https://otus.ru/categories/programming/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Программирование<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10414" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10414"><a href="https://otus.ru/categories/architecture/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Архитектура<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10415" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10415"><a href="https://otus.ru/categories/operations/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Инфраструктура<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10416" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10416"><a href="https://otus.ru/categories/information-security-courses/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Безопасность<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10417" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10417"><a href="https://otus.ru/categories/data-science/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Data Science<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10418" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10418"><a href="https://otus.ru/categories/gamedev/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">GameDev<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10419" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10419"><a href="https://otus.ru/categories/marketing-business/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Управление<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10420" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10420"><a href="https://otus.ru/categories/analytics/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Аналитика и анализ<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10421" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10421"><a href="https://otus.ru/categories/testing/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Тестирование<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
</ul></div> </div>
</div>
</div>
<div class="main wrap">
<div class="ts-row cf">
<div class="col-8 main-content cf">
<article id="post-2046" class="the-post post-2046 post type-post status-publish format-standard has-post-thumbnail category-polza tag-devops tag-docker tag-linux tag-linuks">
<header class="post-header the-post-header cf">
<div class="post-meta the-post-meta">
<span class="post-cat">
<a href="https://otus.ru/journal/category/polza/" class="category" data-wpel-link="internal">Полезное</a>
</span>
<h1 class="post-title">
Docker – определение, создание, использование
</h1>
<a href="https://otus.ru/journal/docker-opredelenie-sozdanie-ispolzovanie/" class="date-link" data-wpel-link="internal"><time class="post-date">24 сентября, 2021</time></a>
</div>
<div class="featured">
<a href="https://otus.ru/journal/wp-content/uploads/2021/09/oj-1080x720-6.png" class="image-link" data-wpel-link="internal"><img width="770" height="515" src="data:image/svg+xml,%3Csvg%20viewBox%3D%270%200%20770%20515%27%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%3E%3C%2Fsvg%3E" class="attachment-contentberg-main size-contentberg-main lazyload wp-post-image" alt="Docker – определение, создание, использование" title="Docker – определение, создание, использование" decoding="async" fetchpriority="high" data-srcset="https://otus.ru/journal/wp-content/uploads/2021/09/oj-1080x720-6-770x515.png 770w, https://otus.ru/journal/wp-content/uploads/2021/09/oj-1080x720-6-300x200.png 300w, https://otus.ru/journal/wp-content/uploads/2021/09/oj-1080x720-6-1024x683.png 1024w, https://otus.ru/journal/wp-content/uploads/2021/09/oj-1080x720-6-150x100.png 150w, https://otus.ru/journal/wp-content/uploads/2021/09/oj-1080x720-6-270x180.png 270w" data-src="https://otus.ru/journal/wp-content/uploads/2021/09/oj-1080x720-6-770x515.png" data-sizes="(max-width: 770px) 100vw, 770px" /> </a>
</div>
</header><!-- .post-header -->
<div class="post-content description cf entry-content content-normal">
<div id="ez-toc-container" class="ez-toc-v2_0_61 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction">
<div class="ez-toc-title-container">
<p class="ez-toc-title " >Содержание</p>
<span class="ez-toc-title-toggle"><a href="#" class="ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle" aria-label="Toggle Table of Content"><span class="ez-toc-js-icon-con"><span class=""><span class="eztoc-hide" style="display:none;">Toggle</span><span class="ez-toc-icon-toggle-span"><svg style="fill: #999;color:#999" xmlns="http://www.w3.org/2000/svg" class="list-377408" width="20px" height="20px" viewBox="0 0 24 24" fill="none"><path d="M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z" fill="currentColor"></path></svg><svg style="fill: #999;color:#999" class="arrow-unsorted-368013" xmlns="http://www.w3.org/2000/svg" width="10px" height="10px" viewBox="0 0 24 24" version="1.2" baseProfile="tiny"><path d="M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z"/></svg></span></span></span></a></span></div>
<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-1" href="#%D0%9E%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5" title="Определение">Определение</a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-2" href="#%D0%9D%D0%B5%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE_%D0%B8%D1%81%D1%82%D0%BE%D1%80%D0%B8%D0%B8" title="Немного истории">Немного истории</a></li></ul></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-3" href="#%D0%9F%D1%80%D0%B8%D0%BD%D1%86%D0%B8%D0%BF_%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B" title="Принцип работы">Принцип работы</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-4" href="#%D0%A1%D0%B8%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5_%D1%81%D1%82%D0%BE%D1%80%D0%BE%D0%BD%D1%8B" title="Сильные стороны">Сильные стороны</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-5" href="#%D0%9A%D0%BE%D0%BC%D0%BF%D0%BE%D0%BD%D0%B5%D0%BD%D1%82%D1%8B" title="Компоненты">Компоненты</a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-6" href="#%D0%94%D0%B2%D0%B8%D0%B6%D0%BE%D0%BA" title="Движок">Движок</a></li></ul></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-7" href="#%D0%9A%D0%B0%D0%BA_%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%B0%D0%B5%D1%82_%C2%AB%D1%83%D1%82%D0%B8%D0%BB%D0%B8%D1%82%D0%B0%C2%BB" title="Как работает «утилита»">Как работает «утилита»</a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-8" href="#%D0%A1%D1%85%D0%B5%D0%BC%D0%B0" title="Схема">Схема</a></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-9" href="#%D0%9E%D0%B1%D1%80%D0%B0%D0%B7" title="Образ">Образ</a></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-10" href="#%D0%9A%D0%BE%D0%BD%D1%82%D0%B5%D0%B9%D0%BD%D0%B5%D1%80%D1%8B" title="Контейнеры">Контейнеры</a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class="ez-toc-link ez-toc-heading-11" href="#%D0%9F%D1%80%D0%BE%D1%86%D0%B5%D1%81%D1%81_%D0%BF%D1%80%D0%B8_%D0%B7%D0%B0%D0%BF%D1%83%D1%81%D0%BA%D0%B5_%D0%BA%D0%BE%D0%BD%D1%82%D0%B5%D0%B9%D0%BD%D0%B5%D1%80%D0%BE%D0%B2" title="Процесс при запуске контейнеров">Процесс при запуске контейнеров</a></li></ul></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-12" href="#Compose" title="Compose">Compose</a></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-13" href="#_Swarm" title=" Swarm"> Swarm</a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class="ez-toc-link ez-toc-heading-14" href="#%D0%A7%D1%82%D0%BE_%D1%83%D0%BC%D0%B5%D0%B5%D1%82" title="Что умеет">Что умеет</a></li></ul></li></ul></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-15" href="#%D0%98%D0%BD%D0%B8%D1%86%D0%B8%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F_Docker" title="Инициализация Docker">Инициализация Docker</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-16" href="#DokerFile_%E2%80%93_%D1%8D%D1%82%D0%BE" title="DokerFile – это">DokerFile – это</a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-17" href="#%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5" title="Создание">Создание</a></li></ul></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-18" href="#%D0%9A%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4%D1%8B" title="Команды">Команды</a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-19" href="#%D0%9A%D0%B0%D0%BA_%D0%BF%D1%80%D0%B8%D0%BC%D0%B5%D0%BD%D1%8F%D1%8E%D1%82%D1%81%D1%8F" title="Как применяются">Как применяются</a></li></ul></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-20" href="#%D0%9A%D0%B0%D0%BA_%D1%80%D0%B0%D0%B7%D0%B1%D0%B8%D1%80%D0%B0%D1%82%D1%8C%D1%81%D1%8F_%D0%B2_%D0%94%D0%BE%D0%BA%D0%B5%D1%80%D0%B5" title="Как разбираться в Докере">Как разбираться в Докере</a></li></ul></nav></div>
<p>Информационные технологии – то, что пользуется огромным спросом в современном мире. Сегодня данная сфера стремительно развивается. Из-за этого разработчики и программисты получают уникальную возможность – совершенствоваться и создавать разнообразный уникальный софт, оснащенным мощным функционалом.</p>
<p>Некоторое время назад появилось совершенно новое понятие. Термин, о котором идет речь – docker. Не все понимают, что он собой представляет. Но для разработчиков и программистов соответствующий элемент играет важную роль.</p>
<p>В данной статье будет рассказано о том, что собой представляет соответствующий «контейнер», как он работает и пишется. В итоге каждый сможет понять, каким образом софт будет запускаться и за что отвечать. Предложенная информация полезна не только новичкам, но и тем, кто уже долгое время занят в соответствующей области.</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9E%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5"></span>Определение<span class="ez-toc-section-end"></span></h2>
<p>Контейнер под названием Docker – это специальное программное обеспечение. Имеет открытый исходный код, благодаря чему может использоваться программерами и разрабами весьма активно. Задействуется при:</p>
<ul><li>разработке софта;</li><li>запуске веб-утилит;</li><li>доставки программ.</li></ul>
<p>Все манипуляции осуществляются через среды, которые поддерживают так называются контейнеризацию.</p>
<p>Docker требуется для того, чтобы эффективно использовать разнообразные системы и их ресурсы, развертывать готовое ПО и его масштабирования. Данный контейнер гарантированно сохраняет стабильность работы утилиты при переносе в другие среды.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9D%D0%B5%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE_%D0%B8%D1%81%D1%82%D0%BE%D1%80%D0%B8%D0%B8"></span>Немного истории<span class="ez-toc-section-end"></span></h3>
<p>Docker Build – ПО, которое разрабатывается с 2008 года. Тогда о нем мало кто слышал. Тесты и совершенствование контента проводились в «закрытом пространстве».</p>
<p>В 2013 году Докер появился в Сети в качестве свободно распространяемого контейнера. Получил лицензию Apache 2.0. Часто о соответствующем контейнере слышат владельцы Linux. Для них Докер включили впервые в виде тестового программного обеспечения с дистрибутивом Red Hat Enterprise Linux. В 2017 году Docker стал более совершенным в плане коммерческого использования.</p>
<p>Сейчас контейнер работает в Линуксе с поддержкой cgroups и изоляции пространства имен. Для установки на других операционных системах требуется использовать специальное ПО типа Docker Machine и Kitematic.</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9F%D1%80%D0%B8%D0%BD%D1%86%D0%B8%D0%BF_%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B"></span>Принцип работы<span class="ez-toc-section-end"></span></h2>
<p>Docker Container работает по определенным принципам. Основное предназначение – контейнеризация программного обеспечения. Представлен некой визуализацией, позволяющей упаковывать софт по изолированным средам. Они носят название контейнеров.</p>
<p>Необходимо помнить, что соответствующие «элементы» функционируют в совершенно разных средах:</p>
<ul><li>локальные центры обработки данных;</li><li>облака;</li><li>персональные компьютеры;</li><li>иные гаджеты.</li></ul>
<p>Каждый контейнер имеет настройки и составляющие, необходимые для нормального функционирования задействованного приложения. Подобный прием позволяет одновременно запускать огромное количество контейнеров в пределах одного и того же хоста.</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%A1%D0%B8%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5_%D1%81%D1%82%D0%BE%D1%80%D0%BE%D0%BD%D1%8B"></span>Сильные стороны<span class="ez-toc-section-end"></span></h2>
<p>Docker Container – программное обеспечение для файловой системы или компьютера, обладающее определенным спектром сильных сторон. Принято выделять следующие преимущества «элемента»:</p>
<ol type="1"><li>Небольшое потребление ресурсов. «Блоки» не отвечают за виртуализацию всей операционной системы. Они используют только ядро хоста и изолируют задействованную утилиту на уровне процессов.</li><li>Быстрое развертывание. Возможно использование готового базового образа на docker. Дополнительные компоненты не нужно задействовать. Пример – нет необходимости в постоянной установке и настройке from Ubuntu. Хватит одной инсталляции и создания образа. Далее из последнего будет осуществляться дальнейший запуск ПО. При необходимости пользователь может производить различные обновления.</li><li>Удобство скрытия процессов. Контейнер предусматривает возможность использования разных методов обработки информации. Фоновые процессы скрываются с колоссальным успехом.</li><li>Возможность работы с небезопасными кодами. Технологии изолирования дают возможность запуска любых кодификаций. Беспокоиться за последствия для операционной системы не придется.</li><li>Легкое масштабирование. Любой проект без проблем расширяется путем внедрения новых контейнеров.</li><li>Удобный запуск. Docker Run позволяет запускать внутри контейнера любое приложение в пределах хоста.</li></ol>
<p>А еще данный компонент предусматривает оптимизацию файловой системы. Образ включает в себя слои, которые эффективно используют ОС и ее файловые компоненты.</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9A%D0%BE%D0%BC%D0%BF%D0%BE%D0%BD%D0%B5%D0%BD%D1%82%D1%8B"></span>Компоненты<span class="ez-toc-section-end"></span></h2>
<p>Для тех, кто только начинает изучать docker, нужно знать определенные его составляющие и понятия. Особое внимание уделяют следующим терминам:</p>
<ol type="1"><li>Docker-daemon – контейнерный сервер, который входит в состав программных средств Докера. Управляет докер-объектами (сетью, образами, хранилищами, контейнерами). Связывается с другими демонами, чтобы осуществлять управление сервисами.</li><li>CLI (клиент) – интерфейс пользовательского взаимодействия с Docker-демоном. Клиент и Демон – важнейшие компоненты «движка» Docker Engine. Клиент способен поддерживать связь сразу с несколькими демонами.</li><li>Образ – файл, который включает зависимость, сведения, параметры, конфигурации и так далее для дальнейшеро развертывания и инициализации контейнеров.</li><li>Файл – описание принципов и правил сборки образа. Там первая строчка отвечает за базовый образ. Остальные команды копируют файлы и установку приложений для создания среды разработки того или иного типа.</li><li>Docker контейнер – исполняемый пакет ПО, который отличается легкостью и автономностью. Предусматривает все, что нужно для запуска утилиты. Выполнение кодификации возможно при наличии исходного кода, среды обработки, системных инструментов, настроек и библиотек.</li><li>Volume (том) – процедура эмуляции файловой системы для дальнейшего осуществления операций чтения и записи. Автоматически создается контейнером.</li><li>Реестр – сервер, который был заранее зарезервирован. Используется для того, чтобы хранить docker-образы.</li><li>Хаб – репозиторий, хранилище информации. Предназначается для хранения образов с разным ПО. Если есть готовые элементы, утилита будет разрабатываться быстрее.</li><li>Хост – виртуальные машины (среды), задействованные для запуска контейнеров с ПО.</li><li>Сети – некие компоненты, применяемые для организации сетевых интерфейсов в пределах утилит контейнерного характера.</li></ol>
<p>Вот несколько примеров Docker-registry:</p>
<ol type="1"><li>Центр Докер – реестр, который используется для подгрузки docker-image. Отвечает за обеспечение и размещение оных, а также интеграцию GitHub и BitBucket.</li><li>Контейнеры Azure. Используются для работы с образами и их компонентами в директориях Azure.</li><li>Доверенный реестр Докер (DTR) – служба docker-реестра. Используется для установки на локальном компьютере или сети корпорации.</li></ol>
<p>После того, как пользователь разобрался с терминологией и понял, что такое docker hub и другие контейнерные элементы, можно рассмотреть другие важные аспекты тематики.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="%D0%94%D0%B2%D0%B8%D0%B6%D0%BE%D0%BA"></span>Движок<span class="ez-toc-section-end"></span></h3>
<p>Перед тем, как устанавливать Докер и активно пользоваться им, стоит учесть, что собой представляет Docker Engine. Так называют ядро механизма рассматриваемого контейнера.</p>
<p>Движок будет отвечать за функционирование и обеспечение связей с основными докер-объектами. К ним относят образы, контейнеры и реестры.</p>
<p>У этого движка есть определенные элементы:</p>
<ol type="1"><li>Сервер. Должен отвечать за выполнение инициализации демона (так можно назвать фоновую программу), который задействован для управления и корректировки контейнеров, томов, образов.</li><li>REST API. Добавляет функции взаимодействия клиента с демоном. Представлен своеобразным программным механизмом.</li><li>Клиент. Позволяет выполнять юзерам различные действия с серверами. Для реализации поставленной задачи используются команды. Они набираются программером или человеком через интерфейс CLI.</li></ol>
<p>Без движка освоить рассматриваемый элемент не получится. Начать изучение Докера рекомендуется именно с «ядра».</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9A%D0%B0%D0%BA_%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%B0%D0%B5%D1%82_%C2%AB%D1%83%D1%82%D0%B8%D0%BB%D0%B8%D1%82%D0%B0%C2%BB"></span>Как работает «утилита»<span class="ez-toc-section-end"></span></h2>
<p>Пользователи, решившие освоить Docker, должны в большинстве случаев разбираться в информатике и программировании. А еще им предстоит выяснить, какие принципы и схемы работы доступны каждому.</p>
<p>Базируется работа Докера на принципе клиент-серверной архитектуры. Она опирается на взаимодействие клиентов с веб-серверами (хостами). Первый будет отправлять запросы на получение информации, второй – отвечать на них и производить отправку.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="%D0%A1%D1%85%D0%B5%D0%BC%D0%B0"></span>Схема<span class="ez-toc-section-end"></span></h3>
<p>Теперь важно рассмотреть схему работы изучаемого механизма. На самом деле все не так трудно для понимания. Докер Build работает так:</p>
<ol type="1"><li>Пользователь через клиентский интерфейс отдает команды демону. Последний развернут заранее на хосте.</li><li>Опираясь на команду, которая задается клиентом, происходит выполнение операций с образами. Манипулятором является демон. В основе лежат инструкции и указания, прописанные в Dockerfile. Пример – автоматическая сборка оных осуществляется через «докер built» (все на английском).</li><li>Происходит работа образа, расположенного в контейнере.</li></ol>
<p>Пример работы образа: запуск docker-image через docker run (команду) или удаление контейнера при помощи docker kill.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9E%D0%B1%D1%80%D0%B0%D0%B7"></span>Образ<span class="ez-toc-section-end"></span></h3>
<p>Вбить команду docker и смотреть, как она реализуется – недостаточно для нормального понимания контейнирования. Образы в этой системе – некие шаблоны, предназначенные для чтения (и только для него). Имеют определенные инструкции для формирования «блока хранения». Состоит из слоев, скомбинированных Докером в единый образ через вспомогательные файловые системы UnionFS. Это помогает избавиться от нерациональности при использовании дисковой памяти.</p>
<p>Параметры образа прописываются в Dockerfile. Чтобы много раз применять Image, требуется использование реестра образов или doker-registry. Они позволяют заканчивать готовые образы с внешних депозиториев сервисов и хранить их в реестре хоста. Лучше всего задействовать официальные реестры компании Docker Trusted Registry.</p>
<p>Тут уместны комментарии, которые дают опытные разработчики. Когда нужно получить файл, скачивать рекомендуется только необходимые слои. Если программер захотел доработать софт и модифицировать образ, останется внести корректировки только в желаемые файлы. После того, как произойдет загрузка только тех слоев на сервер, которые обладают модификациями.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9A%D0%BE%D0%BD%D1%82%D0%B5%D0%B9%D0%BD%D0%B5%D1%80%D1%8B"></span>Контейнеры<span class="ez-toc-section-end"></span></h3>
<p>Docker работает комплексно. Чтобы понимать, какие изменения происходят в процессе реализации «пакета», важно рассматривать каждую его составляющую. Containers базируется на основе образов. Они запускаются из ядра Linux напрямую. Это позволяет рационально использовать ресурсы компьютера или иного задействованного устройства.</p>
<p>Процесс работы контейнеров типа Docker проводится так:</p>
<ol type="1"><li>Определяются «блоки хранения».</li><li>Для каждого изолированного пространства создается уникальное поле имен.</li><li>Имена отвечают за обеспечение доступа к контейнерам.</li><li>Ограничения на процессы внутри «элемента» устанавливаются за счет технологии namespace.</li></ol>
<p>В случае с движком используются иные технологии. Они называются «контрольными группами» — cgroups. Приложение просто ограничивается набором ресурсов. Контрольные группы отвечают за обмен аппаратных возможностей с контейнерами, на которые дополнительно инициализируются те или иные ограничения (права доступа, использование памяти и так далее).</p>
<p>Движки Docker объединяют пространства имен, контрольные группы и файловые системы UnionFS, выдавая в конечном итоге формат контейнера. Далее создатели рассматриваемой сферы планируют внедрить поддержку иных форматов через интеграцию BSD Jails или Solaris Zones.</p>
<h4 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9F%D1%80%D0%BE%D1%86%D0%B5%D1%81%D1%81_%D0%BF%D1%80%D0%B8_%D0%B7%D0%B0%D0%BF%D1%83%D1%81%D0%BA%D0%B5_%D0%BA%D0%BE%D0%BD%D1%82%D0%B5%D0%B9%D0%BD%D0%B5%D1%80%D0%BE%D0%B2"></span>Процесс при запуске контейнеров<span class="ez-toc-section-end"></span></h4>
<p>Не совсем понятно, что произойдет, если мы запустим контейнер. Можно провести элементарный тест (только опытными программерами) и посмотреть поэтапно за выполняемыми операциями.</p>
<p>Алгоритм в container будет осуществляться следующим образом:</p>
<ol type="1"><li>Запускается Docker образ.</li><li>Движок проверяет существование оного. Если он локальный, используется для создания нового контейнера. В противном случае производится загрузка с Docker Hub.</li><li>Создается контейнер из образа.</li><li>Файловая система получает разметку.</li><li>Добавляются слои записи.</li><li>Создается сетевой интерфейс.</li><li>Ищется и присваивается IP-адрес.</li><li>Осуществляется запуск указанного процесса.</li><li>Происходит захват ввода и вывода приложения.</li></ol>
<p>С помощью команды того или иного типа пользователь сможет осуществлять управление Docker. Главное знать, какие именно операции прописывать. Но для управления может быть задействован иной элемент.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="Compose"></span>Compose<span class="ez-toc-section-end"></span></h3>
<p>Речь идет о таком компоненте как Docker Compose. Созданный нами контейнер управляется командами. А их группы – специальным пакетным менеджером. Это и есть Compose.</p>
<p>Не пользуется большим спросом. Пользователю проще работать с командами через интерфейс и командную строку. Но иногда его задействование является обоснованным.</p>
<p>Docker Compose – это менеджер, который используется при создании сложных программ и утилит с большим количеством процессов и сервисов. Для «обычного» софта предпочтительно задействовать «обычный докер».</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="_Swarm"></span> Swarm<span class="ez-toc-section-end"></span></h3>
<p>Swarm – утилита, которая сохранит хосты в единый кластер. Host, который входит в состав приложения, называется узлом (node). Он бывает двух типов: управляющим и рабочим. Стоит обратить внимание на то, что кластер может иметь только один управляющий «узел».</p>
<p>Docker Swarm – довольно простое программное обеспечение. Им сможет пользоваться даже новичок.</p>
<h4 class="wp-block-heading"><span class="ez-toc-section" id="%D0%A7%D1%82%D0%BE_%D1%83%D0%BC%D0%B5%D0%B5%D1%82"></span>Что умеет<span class="ez-toc-section-end"></span></h4>
<p>Софт, описанный выше, обладает определенным спектром возможностей:</p>
<ol type="1"><li>Управление характеристиками нагрузки. Здесь проводится оптимизация рассылки запросов между хостами. Обеспечивается равномерное распределение нагрузки.</li><li>Динамическое управление. Позволяет добавлять в builds swarm-кластера новых составляющих. Перезапуск оных не требуется.</li><li>Масштабирование. Отвечает за creating и deleting докер-образов. Они используются при автоматическом создании контейнеров в будущем.</li><li>Восстановление «узлов» после сбоев и ошибок. Работоспособность каждого host все время находится под контролем управляющего. Если кластер дает сбой, начинается его восстановление с дальнейшим перезапуском.</li></ol>
<p>Это основные принципы работы докера сварм. Есть также функция Rolling-update. Отвечает за обновление контейнеров. Процесс осуществляется в определенной последовательности и с задержками для запуска других «пространств хранения». Параметры прописываются в настройках. При сбое обновления выводится ошибка. Процедура начинается с самого начала.</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%98%D0%BD%D0%B8%D1%86%D0%B8%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F_Docker"></span>Инициализация Docker<span class="ez-toc-section-end"></span></h2>
<p>Создать образ докера и пользоваться контейнированием можно на любой операционной системе, включая Windows. Всего существуют две сборки:</p>
<ul><li>Community Edition (бесплатная версия);</li><li>Enterprise Edition (платная).</li></ul>
<p>Среди наиболее популярных «разработок» докеров выделяют первый вариант. Он отлично подойдет новичкам. Во втором есть дополнительные функции.</p>
<p>Для инициализации Docker Build и его компонентов требуется:</p>
<ol type="1"><li>Перейти по <a href="https://www.docker.com/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">ссылке<span class="wpel-icon wpel-image wpel-icon-6"></span></a> и выбрать ОС.</li><li>Запустить файл.</li><li>Следовать указаниям мастера установки.</li></ol>
<p>Для проверки, какой building инициализирован (и установлен ли он вообще), сделаем следующее (на примере Windows 10):</p>
<ol type="1"><li>Вызвать командную строку.</li><li>Написать в появившемся поле docker.</li><li>Нажать на «Выполнить».</li></ol>
<p>Если все нормально, появится окно, в котором прописана информация о докере. Теперь в качестве теста требуется удостовериться в доступности Docker Compose. Для этого выполняется команда «docker-compose».</p>
<p>Внимание: при использовании linux «композ» устанавливается отдельно.</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="DokerFile_%E2%80%93_%D1%8D%D1%82%D0%BE"></span>DokerFile – это<span class="ez-toc-section-end"></span></h2>
<p>ДокерФайл – это не просто документ с параметрами контейнера. На любом сайте или облаке можно поделиться задействованной средой. Той, в которой запускался код. Это помогает при воспроизведении на различных машинах.</p>
<p>Dockerfile – документ конфигурации, который описывает пошаговое создание среды (created file) утилиты разработчика. Здесь описываются:</p>
<ul><li>команды;</li><li>образы;</li><li>настройки.</li></ul>
<p>Именно «докерфайл» обрабатывается движком, который отвечает за создание образов.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5"></span>Создание<span class="ez-toc-section-end"></span></h3>
<p>Для того, чтобы пользоваться Докером, требуется создать Dockerfile. Обычно образы create автоматически. Но есть и ручное создание.</p>
<p>Чтобы им воспользоваться, необходимо задействовать команду docker commit. А для автоматизации процесса, как было сказано выше, используется build.</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9A%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4%D1%8B"></span>Команды<span class="ez-toc-section-end"></span></h2>
<p>В процессе использования Докеров разработчику предстоит пользоваться разнообразными командами. Вот несколько из них:</p>
<ul><li>docker create -t -i eon01/infinite —name infinite – создание контейнера;</li><li>docker run -it —name infinite -d eon01/infinite – первый запуск;</li><li>docker rename infinite infinity – переименование;</li><li>docker rm infinite – удаление;</li><li>run apt-get – запуск;</li><li>docker ps – вывод запущенных контейнеров;</li><li>apt-get install – инициализация.</li></ul>
<p>Внимание: если требуется загрузить докер-образы из регистров, нужно использовать утилиту docker pull.</p>
<p>Созданием docker контейнеров занимаются именно разработчики. Обычные пользователи не имеют доступа к подобным возможностям. Перечисленных операций новичкам хватит. Если посетить <a href="https://habr.com/ru/company/flant/blog/336654/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">этот адрес<span class="wpel-icon wpel-image wpel-icon-6"></span></a>, можно увидеть все команды для Докера.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9A%D0%B0%D0%BA_%D0%BF%D1%80%D0%B8%D0%BC%D0%B5%D0%BD%D1%8F%D1%8E%D1%82%D1%81%D1%8F"></span>Как применяются<span class="ez-toc-section-end"></span></h3>
<p>Чтобы поставить точку в выбранной области, важно не только хорошо разобраться в Docker. А еще и понять, каким образом их используют. Вот несколько примеров тестирования и задействования, которые помогут разобраться в ситуации:</p>
<ol type="1"><li>Доставка приложений с высокой скоростью (команды build и push). Отвечает за организацию коллективной работы над проектом. Программеры смогут работать удаленно на локальных компьютерах. Фрагменты кода пересылаются контейнерами для тестов.</li><li>Развертывание и масштабирование. Каждый «блок» работоспособен на локальных ПК, серверах, облаках. Загружаются на порт (хостинг) для тестирования. После позволяют создавать (run), останавливать (stop) и запускать (start), а также возобновлять остановленные контейнеры (pause/unpause).</li><li>Множественные нагрузки. Это – запуск большого количества «блоков» на одном и том же устройстве. Достигается за счет «легкости» Докеров.</li><li>Диспетчер процессов. Позволяет отслеживать процессы в Docker через ps и top.</li><li>Поиск с максимальным комфортом. Для реализации поставленной задачи используется search.</li></ol>
<p>Докер работает стабильно, предусматривает обновления и защиту от сбоев. И пользоваться ими не так трудно. Синтаксис этого «элемента» подвластен даже новичкам.</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9A%D0%B0%D0%BA_%D1%80%D0%B0%D0%B7%D0%B1%D0%B8%D1%80%D0%B0%D1%82%D1%8C%D1%81%D1%8F_%D0%B2_%D0%94%D0%BE%D0%BA%D0%B5%D1%80%D0%B5"></span>Как разбираться в Докере<span class="ez-toc-section-end"></span></h2>
<p>Если посмотреть на Докер поверхностно, создастся впечатление, что освоить данную область трудно. На самом деле это не так.</p>
<p>Многие разработчики при помощи самообразования разобрались в том, каким образом работает Докер. В сети полно сопутствующей литературы и туториалов. Но для более быстрого и надежного решения рекомендуется закончить специализированные курсы. Они есть и очные, и дистанционные. Например, прокачать навыки администрирования Linux на <a href="https://otus.ru/lessons/linux-basic/?utm_source=oj&utm_medium=affilate&utm_campaign=linux_basic&utm_term=24.09.2021" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right"><strong>базовом</strong><span class="wpel-icon wpel-image wpel-icon-6"></span></a> и <a href="https://otus.ru/lessons/linux-professional/?utm_source=oj&utm_medium=affilate&utm_campaign=linux&utm_term=24.09.2021" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right"><strong>продвинутом</strong><span class="wpel-icon wpel-image wpel-icon-6"></span></a> уровне можно в OTUS.</p>
<figure class="wp-block-image size-large"><a href="https://otus.ru/lessons/linux-professional/?utm_source=oj&utm_medium=affilate&utm_campaign=linux" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer"><img decoding="async" width="970" height="90" src="https://otus.ru/journal/wp-content/uploads/2021/09/LINUX2.jpg" alt="Docker – определение, создание, использование" class="wp-image-2047" srcset="https://otus.ru/journal/wp-content/uploads/2021/09/LINUX2.jpg 970w, https://otus.ru/journal/wp-content/uploads/2021/09/LINUX2-300x28.jpg 300w, https://otus.ru/journal/wp-content/uploads/2021/09/LINUX2-150x14.jpg 150w, https://otus.ru/journal/wp-content/uploads/2021/09/LINUX2-768x71.jpg 768w" sizes="(max-width: 970px) 100vw, 970px" /></a></figure>
<p>Отдельный модуль по работе с Докером есть и на курсе <a href="https://otus.ru/lessons/devops-praktiki-i-instrumenty/?utm_source=oj&utm_medium=affilate&utm_campaign=devops" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">«DevOps-практики и инструменты»<span class="wpel-icon wpel-image wpel-icon-6"></span></a>:</p>
<figure class="wp-block-image size-large"><a href="https://otus.ru/lessons/devops-praktiki-i-instrumenty/?utm_source=oj&utm_medium=affilate&utm_campaign=devops" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer"><img decoding="async" width="970" height="90" src="https://otus.ru/journal/wp-content/uploads/2021/09/DevOps_970x90.png" alt="Docker – определение, создание, использование" class="wp-image-2052" srcset="https://otus.ru/journal/wp-content/uploads/2021/09/DevOps_970x90.png 970w, https://otus.ru/journal/wp-content/uploads/2021/09/DevOps_970x90-300x28.png 300w, https://otus.ru/journal/wp-content/uploads/2021/09/DevOps_970x90-150x14.png 150w, https://otus.ru/journal/wp-content/uploads/2021/09/DevOps_970x90-768x71.png 768w" sizes="(max-width: 970px) 100vw, 970px" /></a></figure>
<p></p>
</div><!-- .post-content -->
<div class="the-post-foot cf">
<div class="tag-share cf">
<div class="post-tags"><a href="https://otus.ru/journal/tag/devops/" rel="tag" data-wpel-link="internal">devops</a><a href="https://otus.ru/journal/tag/docker/" rel="tag" data-wpel-link="internal">Docker</a><a href="https://otus.ru/journal/tag/linux/" rel="tag" data-wpel-link="internal">Linux</a><a href="https://otus.ru/journal/tag/linuks/" rel="tag" data-wpel-link="internal">Линукс</a></div>
<div class="post-share">
<div class="post-share-icons cf">
<span class="counters">
</span>
<a href="https://www.facebook.com/sharer.php?u=https%3A%2F%2Fotus.ru%2Fjournal%2Fdocker-opredelenie-sozdanie-ispolzovanie%2F" class="link facebook wpel-icon-right" target="_blank" title="Share on Facebook" data-wpel-link="external" rel="nofollow external noopener noreferrer"><i class="fa fa-facebook"></i><span class="wpel-icon wpel-image wpel-icon-6"></span></a>
<a href="https://twitter.com/intent/tweet?url=https%3A%2F%2Fotus.ru%2Fjournal%2Fdocker-opredelenie-sozdanie-ispolzovanie%2F&text=Docker%20%E2%80%93%20%D0%BE%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5%2C%20%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5%2C%20%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5" class="link twitter wpel-icon-right" target="_blank" title="Share on Twitter" data-wpel-link="external" rel="nofollow external noopener noreferrer"><i class="fa fa-twitter"></i><span class="wpel-icon wpel-image wpel-icon-6"></span></a>
<a href="https://www.linkedin.com/shareArticle?mini=true&url=https%3A%2F%2Fotus.ru%2Fjournal%2Fdocker-opredelenie-sozdanie-ispolzovanie%2F" class="link linkedin wpel-icon-right" target="_blank" title="LinkedIn" data-wpel-link="external" rel="nofollow external noopener noreferrer"><i class="fa fa-linkedin"></i><span class="wpel-icon wpel-image wpel-icon-6"></span></a>
<a href="https://pinterest.com/pin/create/button/?url=https%3A%2F%2Fotus.ru%2Fjournal%2Fdocker-opredelenie-sozdanie-ispolzovanie%2F&media=https%3A%2F%2Fotus.ru%2Fjournal%2Fwp-content%2Fuploads%2F2021%2F09%2Foj-1080x720-6.png&description=Docker%20%E2%80%93%20%D0%BE%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5%2C%20%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5%2C%20%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5" class="link pinterest wpel-icon-right" target="_blank" title="Pinterest" data-wpel-link="external" rel="nofollow external noopener noreferrer"><i class="fa fa-pinterest-p"></i><span class="wpel-icon wpel-image wpel-icon-6"></span></a>
</div>
</div>
</div>
</div>
<div class="post-nav">
<div class="post previous cf">
<a href="https://otus.ru/journal/novye-meropriyatiya-v-otus-13/" title="Prev Post" class="nav-icon" data-wpel-link="internal">
<i class="fa fa-angle-left"></i>
</a>
<span class="content">
<a href="https://otus.ru/journal/novye-meropriyatiya-v-otus-13/" class="image-link" rel="previous" data-wpel-link="internal">
<img width="150" height="100" src="data:image/svg+xml,%3Csvg%20viewBox%3D%270%200%20150%20100%27%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%3E%3C%2Fsvg%3E" class="attachment-thumbnail size-thumbnail lazyload wp-post-image" alt="Новые мероприятия в OTUS" decoding="async" loading="lazy" data-srcset="https://otus.ru/journal/wp-content/uploads/2021/09/oj-1080x720-2-1-150x100.png 150w, https://otus.ru/journal/wp-content/uploads/2021/09/oj-1080x720-2-1-300x200.png 300w, https://otus.ru/journal/wp-content/uploads/2021/09/oj-1080x720-2-1-1024x683.png 1024w, https://otus.ru/journal/wp-content/uploads/2021/09/oj-1080x720-2-1-768x512.png 768w, https://otus.ru/journal/wp-content/uploads/2021/09/oj-1080x720-2-1-270x180.png 270w, https://otus.ru/journal/wp-content/uploads/2021/09/oj-1080x720-2-1-770x515.png 770w, https://otus.ru/journal/wp-content/uploads/2021/09/oj-1080x720-2-1-370x245.png 370w, https://otus.ru/journal/wp-content/uploads/2021/09/oj-1080x720-2-1.png 1080w" data-src="https://otus.ru/journal/wp-content/uploads/2021/09/oj-1080x720-2-1-150x100.png" data-sizes="(max-width: 150px) 100vw, 150px" title="Новые мероприятия в OTUS" /> </a>
<div class="post-meta">
<span class="label">Prev Post</span>
<div class="post-meta post-meta-b">
<h2 class="post-title">
<a href="https://otus.ru/journal/novye-meropriyatiya-v-otus-13/" data-wpel-link="internal">Новые мероприятия в OTUS</a>
</h2>
<div class="below">
<a href="https://otus.ru/journal/novye-meropriyatiya-v-otus-13/" class="meta-item date-link" data-wpel-link="internal"><time class="post-date" datetime="2021-09-20T13:48:00+00:00">20 сентября, 2021</time></a>
<span class="meta-sep"></span>
<span class="meta-item read-time">4 Mins Read</span>
</div>
</div> </div>
</span>
</div>
<div class="post next cf">
<a href="https://otus.ru/journal/big-data-i-banki-chto-nuzhno-znat-o-bolshih-dannyh/" title="Next Post" class="nav-icon" data-wpel-link="internal">
<i class="fa fa-angle-right"></i>
</a>
<span class="content">
<a href="https://otus.ru/journal/big-data-i-banki-chto-nuzhno-znat-o-bolshih-dannyh/" class="image-link" rel="next" data-wpel-link="internal">
<img width="150" height="100" src="data:image/svg+xml,%3Csvg%20viewBox%3D%270%200%20150%20100%27%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%3E%3C%2Fsvg%3E" class="attachment-thumbnail size-thumbnail lazyload wp-post-image" alt="Big Data и банки: что нужно знать о больших данных" decoding="async" loading="lazy" data-srcset="https://otus.ru/journal/wp-content/uploads/2021/09/oj-1080x720-1-2-150x100.png 150w, https://otus.ru/journal/wp-content/uploads/2021/09/oj-1080x720-1-2-300x200.png 300w, https://otus.ru/journal/wp-content/uploads/2021/09/oj-1080x720-1-2-1024x683.png 1024w, https://otus.ru/journal/wp-content/uploads/2021/09/oj-1080x720-1-2-768x512.png 768w, https://otus.ru/journal/wp-content/uploads/2021/09/oj-1080x720-1-2-270x180.png 270w, https://otus.ru/journal/wp-content/uploads/2021/09/oj-1080x720-1-2-770x515.png 770w, https://otus.ru/journal/wp-content/uploads/2021/09/oj-1080x720-1-2-370x245.png 370w, https://otus.ru/journal/wp-content/uploads/2021/09/oj-1080x720-1-2.png 1080w" data-src="https://otus.ru/journal/wp-content/uploads/2021/09/oj-1080x720-1-2-150x100.png" data-sizes="(max-width: 150px) 100vw, 150px" title="Big Data и банки: что нужно знать о больших данных" /> </a>
<div class="post-meta">
<span class="label">Next Post</span>
<div class="post-meta post-meta-b">
<h2 class="post-title">
<a href="https://otus.ru/journal/big-data-i-banki-chto-nuzhno-znat-o-bolshih-dannyh/" data-wpel-link="internal">Big Data и банки: что нужно знать о больших данных</a>
</h2>
<div class="below">
<a href="https://otus.ru/journal/big-data-i-banki-chto-nuzhno-znat-o-bolshih-dannyh/" class="meta-item date-link" data-wpel-link="internal"><time class="post-date" datetime="2021-09-24T19:14:05+00:00">24 сентября, 2021</time></a>
<span class="meta-sep"></span>
<span class="meta-item read-time">9 Mins Read</span>
</div>
</div> </div>
</span>
</div>
</div>
<section class="related-posts grid-3">
<h4 class="section-head"><span class="title">Читать ещё</span></h4>
<div class="ts-row posts cf">
<article class="post col-4">
<a href="https://otus.ru/journal/uroven-gotovnosti-cto-k-2026/" title="Уровень готовности CTO к 2026" class="image-link" data-wpel-link="internal">
<img width="270" height="180" src="data:image/svg+xml,%3Csvg%20viewBox%3D%270%200%20270%20180%27%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%3E%3C%2Fsvg%3E" class="image lazyload wp-post-image" alt="Уровень готовности CTO к 2026" title="Уровень готовности CTO к 2026" decoding="async" loading="lazy" data-srcset="https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-3-270x180.jpg 270w, https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-3-770x515.jpg 770w, https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-3-370x245.jpg 370w" data-src="https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-3-270x180.jpg" data-sizes="(max-width: 270px) 100vw, 270px" /> </a>
<div class="content">
<h3 class="post-title"><a href="https://otus.ru/journal/uroven-gotovnosti-cto-k-2026/" class="post-link" data-wpel-link="internal">Уровень готовности CTO к 2026</a></h3>
<div class="post-meta">
<time class="post-date" datetime="2025-11-16T19:50:59+00:00">16 ноября, 2025</time>
</div>
</div>
</article >
<article class="post col-4">
<a href="https://otus.ru/journal/novye-uroki-noyabrya-tolko-top-temy-po-programmirovaniju/" title="Новые уроки ноября: только топ-темы по программированию" class="image-link" data-wpel-link="internal">
<img width="270" height="180" src="data:image/svg+xml,%3Csvg%20viewBox%3D%270%200%20270%20180%27%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%3E%3C%2Fsvg%3E" class="image lazyload wp-post-image" alt="Новые уроки ноября: только топ-темы по программированию" title="Новые уроки ноября: только топ-темы по программированию" decoding="async" loading="lazy" data-srcset="https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-2-270x180.jpg 270w, https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-2-770x515.jpg 770w, https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-2-370x245.jpg 370w" data-src="https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-2-270x180.jpg" data-sizes="(max-width: 270px) 100vw, 270px" /> </a>
<div class="content">
<h3 class="post-title"><a href="https://otus.ru/journal/novye-uroki-noyabrya-tolko-top-temy-po-programmirovaniju/" class="post-link" data-wpel-link="internal">Новые уроки ноября: только топ-темы по программированию</a></h3>
<div class="post-meta">
<time class="post-date" datetime="2025-11-09T23:24:11+00:00">9 ноября, 2025</time>
</div>
</div>
</article >
<article class="post col-4">
<a href="https://otus.ru/journal/schjot-idjot-na-chasy/" title="Счёт идёт на часы" class="image-link" data-wpel-link="internal">
<img width="270" height="180" src="data:image/svg+xml,%3Csvg%20viewBox%3D%270%200%20270%20180%27%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%3E%3C%2Fsvg%3E" class="image lazyload wp-post-image" alt="Счёт идёт на часы" title="Счёт идёт на часы" decoding="async" loading="lazy" data-srcset="https://otus.ru/journal/wp-content/uploads/2025/10/oj-1080x720-kopiya-7-270x180.png 270w, https://otus.ru/journal/wp-content/uploads/2025/10/oj-1080x720-kopiya-7-770x515.png 770w, https://otus.ru/journal/wp-content/uploads/2025/10/oj-1080x720-kopiya-7-370x245.png 370w" data-src="https://otus.ru/journal/wp-content/uploads/2025/10/oj-1080x720-kopiya-7-270x180.png" data-sizes="(max-width: 270px) 100vw, 270px" /> </a>
<div class="content">
<h3 class="post-title"><a href="https://otus.ru/journal/schjot-idjot-na-chasy/" class="post-link" data-wpel-link="internal">Счёт идёт на часы</a></h3>
<div class="post-meta">
<time class="post-date" datetime="2025-10-30T15:04:59+00:00">30 октября, 2025</time>
</div>
</div>
</article >
</div>
</section>
</article> <!-- .the-post -->
</div>
<aside class="col-4 sidebar">
<div class="inner">
<ul>
<li id="search-2" class="widget widget_search"><h5 class="widget-title"><span>Поиск по блогу</span></h5>
<form method="get" class="search-form" action="https://otus.ru/journal/">
<label>
<span class="screen-reader-text">Search for:</span>
<input type="search" class="search-field" placeholder="Введите запрос и нажмите Enter" value="" name="s" title="Search for:" />
</label>
<button type="submit" class="search-submit"><i class="fa fa-search"></i></button>
</form>
</li>
<li id="tag_cloud-5" class="widget widget_tag_cloud"><h5 class="widget-title"><span>Метки</span></h5><div class="tagcloud"><a href="https://otus.ru/journal/tag/android-2/" class="tag-cloud-link tag-link-74 tag-link-position-1" style="font-size: 12.472222222222pt;" aria-label="Android (34 элемента)" data-wpel-link="internal">Android</a>
<a href="https://otus.ru/journal/tag/c-3/" class="tag-cloud-link tag-link-91 tag-link-position-2" style="font-size: 10.916666666667pt;" aria-label="C (23 элемента)" data-wpel-link="internal">C</a>
<a href="https://otus.ru/journal/tag/c-2/" class="tag-cloud-link tag-link-81 tag-link-position-3" style="font-size: 12.666666666667pt;" aria-label="C# (35 элементов)" data-wpel-link="internal">C#</a>
<a href="https://otus.ru/journal/tag/c/" class="tag-cloud-link tag-link-20 tag-link-position-4" style="font-size: 12.472222222222pt;" aria-label="c++ (34 элемента)" data-wpel-link="internal">c++</a>
<a href="https://otus.ru/journal/tag/computer-science/" class="tag-cloud-link tag-link-209 tag-link-position-5" style="font-size: 15.972222222222pt;" aria-label="computer science (78 элементов)" data-wpel-link="internal">computer science</a>
<a href="https://otus.ru/journal/tag/css/" class="tag-cloud-link tag-link-288 tag-link-position-6" style="font-size: 8.6805555555556pt;" aria-label="CSS (13 элементов)" data-wpel-link="internal">CSS</a>
<a href="https://otus.ru/journal/tag/data-science/" class="tag-cloud-link tag-link-151 tag-link-position-7" style="font-size: 8pt;" aria-label="Data Science (11 элементов)" data-wpel-link="internal">Data Science</a>
<a href="https://otus.ru/journal/tag/devops/" class="tag-cloud-link tag-link-98 tag-link-position-8" style="font-size: 10.138888888889pt;" aria-label="devops (19 элементов)" data-wpel-link="internal">devops</a>
<a href="https://otus.ru/journal/tag/docker/" class="tag-cloud-link tag-link-143 tag-link-position-9" style="font-size: 8.2916666666667pt;" aria-label="Docker (12 элементов)" data-wpel-link="internal">Docker</a>
<a href="https://otus.ru/journal/tag/gamedev/" class="tag-cloud-link tag-link-25 tag-link-position-10" style="font-size: 11.694444444444pt;" aria-label="gamedev (28 элементов)" data-wpel-link="internal">gamedev</a>
<a href="https://otus.ru/journal/tag/hr/" class="tag-cloud-link tag-link-103 tag-link-position-11" style="font-size: 8pt;" aria-label="hr (11 элементов)" data-wpel-link="internal">hr</a>
<a href="https://otus.ru/journal/tag/html/" class="tag-cloud-link tag-link-217 tag-link-position-12" style="font-size: 11.208333333333pt;" aria-label="HTML (25 элементов)" data-wpel-link="internal">HTML</a>
<a href="https://otus.ru/journal/tag/ios/" class="tag-cloud-link tag-link-101 tag-link-position-13" style="font-size: 8.9722222222222pt;" aria-label="iOS (14 элементов)" data-wpel-link="internal">iOS</a>
<a href="https://otus.ru/journal/tag/it/" class="tag-cloud-link tag-link-50 tag-link-position-14" style="font-size: 10.527777777778pt;" aria-label="IT (21 элемент)" data-wpel-link="internal">IT</a>
<a href="https://otus.ru/journal/tag/java/" class="tag-cloud-link tag-link-75 tag-link-position-15" style="font-size: 15.680555555556pt;" aria-label="Java (73 элемента)" data-wpel-link="internal">Java</a>
<a href="https://otus.ru/journal/tag/javascript/" class="tag-cloud-link tag-link-83 tag-link-position-16" style="font-size: 14.319444444444pt;" aria-label="JavaScript (53 элемента)" data-wpel-link="internal">JavaScript</a>
<a href="https://otus.ru/journal/tag/linux/" class="tag-cloud-link tag-link-141 tag-link-position-17" style="font-size: 11.888888888889pt;" aria-label="Linux (29 элементов)" data-wpel-link="internal">Linux</a>
<a href="https://otus.ru/journal/tag/machine-learning/" class="tag-cloud-link tag-link-167 tag-link-position-18" style="font-size: 8.6805555555556pt;" aria-label="Machine Learning (13 элементов)" data-wpel-link="internal">Machine Learning</a>
<a href="https://otus.ru/journal/tag/otus-book/" class="tag-cloud-link tag-link-261 tag-link-position-19" style="font-size: 9.9444444444444pt;" aria-label="otus book (18 элементов)" data-wpel-link="internal">otus book</a>
<a href="https://otus.ru/journal/tag/php/" class="tag-cloud-link tag-link-45 tag-link-position-20" style="font-size: 10.527777777778pt;" aria-label="PHP (21 элемент)" data-wpel-link="internal">PHP</a>
<a href="https://otus.ru/journal/tag/python/" class="tag-cloud-link tag-link-27 tag-link-position-21" style="font-size: 16.944444444444pt;" aria-label="Python (99 элементов)" data-wpel-link="internal">Python</a>
<a href="https://otus.ru/journal/tag/qa/" class="tag-cloud-link tag-link-155 tag-link-position-22" style="font-size: 11.402777777778pt;" aria-label="qa (26 элементов)" data-wpel-link="internal">qa</a>
<a href="https://otus.ru/journal/tag/sql/" class="tag-cloud-link tag-link-38 tag-link-position-23" style="font-size: 12.861111111111pt;" aria-label="SQL (37 элементов)" data-wpel-link="internal">SQL</a>
<a href="https://otus.ru/journal/tag/team-lead/" class="tag-cloud-link tag-link-364 tag-link-position-24" style="font-size: 9.9444444444444pt;" aria-label="team lead (18 элементов)" data-wpel-link="internal">team lead</a>
<a href="https://otus.ru/journal/tag/unity/" class="tag-cloud-link tag-link-24 tag-link-position-25" style="font-size: 8pt;" aria-label="unity (11 элементов)" data-wpel-link="internal">unity</a>
<a href="https://otus.ru/journal/tag/algoritmy/" class="tag-cloud-link tag-link-30 tag-link-position-26" style="font-size: 9.9444444444444pt;" aria-label="Алгоритмы (18 элементов)" data-wpel-link="internal">Алгоритмы</a>
<a href="https://otus.ru/journal/tag/bazy-dannyh/" class="tag-cloud-link tag-link-40 tag-link-position-27" style="font-size: 10.138888888889pt;" aria-label="Базы данных (19 элементов)" data-wpel-link="internal">Базы данных</a>
<a href="https://otus.ru/journal/tag/matematika/" class="tag-cloud-link tag-link-44 tag-link-position-28" style="font-size: 10.916666666667pt;" aria-label="Математика (23 элемента)" data-wpel-link="internal">Математика</a>
<a href="https://otus.ru/journal/tag/arhitektura-po/" class="tag-cloud-link tag-link-10 tag-link-position-29" style="font-size: 9.4583333333333pt;" aria-label="архитектура ПО (16 элементов)" data-wpel-link="internal">архитектура ПО</a>
<a href="https://otus.ru/journal/tag/bazy-dannyh-2/" class="tag-cloud-link tag-link-251 tag-link-position-30" style="font-size: 10.138888888889pt;" aria-label="базы данных (19 элементов)" data-wpel-link="internal">базы данных</a>
<a href="https://otus.ru/journal/tag/vebinar/" class="tag-cloud-link tag-link-201 tag-link-position-31" style="font-size: 13.930555555556pt;" aria-label="вебинар (48 элементов)" data-wpel-link="internal">вебинар</a>
<a href="https://otus.ru/journal/tag/dajdzhest/" class="tag-cloud-link tag-link-308 tag-link-position-32" style="font-size: 10.722222222222pt;" aria-label="дайджест (22 элемента)" data-wpel-link="internal">дайджест</a>
<a href="https://otus.ru/journal/tag/zapis-vebinara/" class="tag-cloud-link tag-link-226 tag-link-position-33" style="font-size: 14.902777777778pt;" aria-label="запись вебинара (61 элемент)" data-wpel-link="internal">запись вебинара</a>
<a href="https://otus.ru/journal/tag/zapis-uroka/" class="tag-cloud-link tag-link-272 tag-link-position-34" style="font-size: 16.069444444444pt;" aria-label="запись урока (80 элементов)" data-wpel-link="internal">запись урока</a>
<a href="https://otus.ru/journal/tag/informacionnaya-bezopasnost/" class="tag-cloud-link tag-link-232 tag-link-position-35" style="font-size: 10.138888888889pt;" aria-label="информационная безопасность (19 элементов)" data-wpel-link="internal">информационная безопасность</a>
<a href="https://otus.ru/journal/tag/karera-v-it/" class="tag-cloud-link tag-link-292 tag-link-position-36" style="font-size: 9.9444444444444pt;" aria-label="карьера в IT (18 элементов)" data-wpel-link="internal">карьера в IT</a>
<a href="https://otus.ru/journal/tag/podborka/" class="tag-cloud-link tag-link-7 tag-link-position-37" style="font-size: 12.666666666667pt;" aria-label="подборка (35 элементов)" data-wpel-link="internal">подборка</a>
<a href="https://otus.ru/journal/tag/podborka-statej/" class="tag-cloud-link tag-link-219 tag-link-position-38" style="font-size: 15.777777777778pt;" aria-label="подборка статей (75 элементов)" data-wpel-link="internal">подборка статей</a>
<a href="https://otus.ru/journal/tag/programmirovanie/" class="tag-cloud-link tag-link-65 tag-link-position-39" style="font-size: 22pt;" aria-label="программирование (332 элемента)" data-wpel-link="internal">программирование</a>
<a href="https://otus.ru/journal/tag/proekt/" class="tag-cloud-link tag-link-321 tag-link-position-40" style="font-size: 11.888888888889pt;" aria-label="проект (29 элементов)" data-wpel-link="internal">проект</a>
<a href="https://otus.ru/journal/tag/proektnaya-rabota/" class="tag-cloud-link tag-link-310 tag-link-position-41" style="font-size: 11.597222222222pt;" aria-label="проектная работа (27 элементов)" data-wpel-link="internal">проектная работа</a>
<a href="https://otus.ru/journal/tag/seti/" class="tag-cloud-link tag-link-181 tag-link-position-42" style="font-size: 12.958333333333pt;" aria-label="сети (38 элементов)" data-wpel-link="internal">сети</a>
<a href="https://otus.ru/journal/tag/testirovanie/" class="tag-cloud-link tag-link-69 tag-link-position-43" style="font-size: 13.930555555556pt;" aria-label="тестирование (48 элементов)" data-wpel-link="internal">тестирование</a>
<a href="https://otus.ru/journal/tag/upravlenie-komandoj/" class="tag-cloud-link tag-link-63 tag-link-position-44" style="font-size: 11.694444444444pt;" aria-label="управление командой (28 элементов)" data-wpel-link="internal">управление командой</a>
<a href="https://otus.ru/journal/tag/habr-2/" class="tag-cloud-link tag-link-203 tag-link-position-45" style="font-size: 13.930555555556pt;" aria-label="хабр (48 элементов)" data-wpel-link="internal">хабр</a></div>
</li>
</ul>
</div>
</aside>
</div> <!-- .ts-row -->
</div> <!-- .main -->
<footer class="main-footer dark bold">
<section class="lower-footer cf">
<div class="wrap">
<div class="links">
<div class="menu-menju-navykov-container"><ul id="menu-menju-navykov-1" class="menu"><li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10413"><a href="https://otus.ru/categories/programming/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Программирование<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10414"><a href="https://otus.ru/categories/architecture/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Архитектура<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10415"><a href="https://otus.ru/categories/operations/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Инфраструктура<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10416"><a href="https://otus.ru/categories/information-security-courses/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Безопасность<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10417"><a href="https://otus.ru/categories/data-science/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Data Science<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10418"><a href="https://otus.ru/categories/gamedev/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">GameDev<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10419"><a href="https://otus.ru/categories/marketing-business/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Управление<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10420"><a href="https://otus.ru/categories/analytics/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Аналитика и анализ<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10421"><a href="https://otus.ru/categories/testing/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Тестирование<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
</ul></div> </div>
<p class="copyright"> © 2015-2026 OTUS </p>
<div class="to-top">
<a href="#" class="back-to-top"><i class="fa fa-angle-up"></i> Top</a>
</div>
</div>
</section>
</footer>
</div> <!-- .main-wrap -->
<div class="mobile-menu-container off-canvas" id="mobile-menu">
<a href="#" class="close"><i class="fa fa-times"></i></a>
<div class="logo">
</div>
<ul class="mobile-menu"></ul>
</div>
<div class="search-modal-wrap">
<div class="search-modal-box" role="dialog" aria-modal="true">
<form method="get" class="search-form" action="https://otus.ru/journal/">
<input type="search" class="search-field" name="s" placeholder="Search..." value="" required />
<button type="submit" class="search-submit visuallyhidden">Submit</button>
<p class="message">
Type above and press <em>Enter</em> to search. Press <em>Esc</em> to cancel. </p>
</form>
</div>
</div>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/plugins/clearfy/components/comments-plus/assets/js/url-span.js" id="wbcr-comments-plus-url-span-js"></script>
<script type="text/javascript" id="ez-toc-scroll-scriptjs-js-extra">
/* <![CDATA[ */
var eztoc_smooth_local = {"scroll_offset":"30"};
/* ]]> */
</script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/plugins/easy-table-of-contents/assets/js/smooth_scroll.min.js" id="ez-toc-scroll-scriptjs-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/plugins/easy-table-of-contents/vendor/js-cookie/js.cookie.min.js" id="ez-toc-js-cookie-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/plugins/easy-table-of-contents/vendor/sticky-kit/jquery.sticky-kit.min.js" id="ez-toc-jquery-sticky-kit-js"></script>
<script type="text/javascript" id="ez-toc-js-js-extra">
/* <![CDATA[ */
var ezTOC = {"smooth_scroll":"1","visibility_hide_by_default":"","scroll_offset":"30","fallbackIcon":"<span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span>"};
/* ]]> */
</script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/plugins/easy-table-of-contents/assets/js/front.min.js" id="ez-toc-js-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/custom-script.js" id="custom-script-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/magnific-popup.js" id="magnific-popup-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/jquery.fitvids.js" id="jquery-fitvids-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-includes/js/imagesloaded.min.js" id="imagesloaded-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/object-fit-images.js" id="object-fit-images-js"></script>
<script type="text/javascript" id="contentberg-theme-js-extra">
/* <![CDATA[ */
var Bunyad = {"custom_ajax_url":"\/journal\/docker-opredelenie-sozdanie-ispolzovanie\/"};
/* ]]> */
</script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/theme.js" id="contentberg-theme-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/theia-sticky-sidebar.js" id="theia-sticky-sidebar-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/jquery.slick.js" id="jquery-slick-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/jarallax.js" id="jarallax-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-includes/js/masonry.min.js" id="masonry-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-includes/js/jquery/jquery.masonry.min.js" id="jquery-masonry-js"></script>
</body>
</html>
<!-- Cache served by breeze CACHE - Last modified: Tue, 10 Mar 2026 18:26:35 GMT -->