Что такое Докер контейнер. Использование Docker в малом и крупном бизнесе для начинающих

Что такое Докер контейнер. Использование Docker в малом и крупном бизнесе для начинающих

00:00 Введение

  • Константин Шуткин, практикующий DevOps-инженер, представляет лекцию для AMP University.
  • Упоминаются предыдущие лекции о процессорах и языках программирования.
  • Переход к теме запуска программ на компьютерах и истории развития этой концепции.

00:57 Проблема разделения ресурсов

  • Вопрос о возможности запуска нескольких операционных систем на одном компьютере.
  • Традиционно на компьютере была одна операционная система, пользователи делили время по расписанию.
  • Необходимость одновременного использования ресурсов процессора, оперативной и долговременной памяти.

01:18 Концепция виртуальных машин и гипервизоров

  • Появление концепции виртуальных машин и гипервизоров для эмуляции железа компьютера.
  • Гипервизор позволяет устанавливать несколько операционных систем на один компьютер.
  • Операционные системы могут одновременно работать и использовать общие ресурсы.

03:03 Ограничения виртуальных машин

  • Виртуальные машины имеют ограничение: суммарное количество ресурсов меньше, чем при использовании одной операционной системы.
  • Гипервизор забирает часть ресурсов для эмуляции железа.
  • Несмотря на ограничения, концепция виртуальных машин остаётся популярной благодаря удобству использования нескольких операционных систем.

05:38 Концепция контейнеров

  • Появление контейнеров, работающих на реальном железе без посредника в виде гипервизора.
  • Пример контейнера — Docker.
  • Логика запуска контейнера отличается от запуска виртуальной машины через гипервизор.

07:26 Гипервизоры и их типы

  • Гипервизоры выполняют функцию запуска виртуальных машин и эмуляции железа.
  • Примеры популярных гипервизоров: Xen, KVM.
  • Возможность создания приватного облака с помощью гипервизоров.

10:05 Управление виртуальными машинами

  • Создание виртуальных машин через командную строку или графический интерфейс.
  • Необходимость обновления версий гипервизоров при изменении железа.
  • Важность функции виртуализации в процессоре.

12:02 Преимущества виртуальных машин

  • Возможность запуска разных операционных систем.
  • Разделение ресурсов на уровне железа.
  • Механизмы ограничения ресурсов для каждой виртуальной машины.
  • Облака работают благодаря использованию виртуальных машин.

12:51 Введение в Docker и виртуальные машины

  • Docker позволяет запускать виртуальные машины на кластере серверов.
  • Гипервизоры объединяют серверы в пул для равномерного распределения нагрузки.
  • Виртуальные машины автоматически перемещаются между серверами, что решает проблему недоутилизации ресурсов.

13:47 Преимущества виртуализации

  • До виртуализации и Docker многие серверы использовались неэффективно.
  • Облака позволяют арендовать только необходимые ресурсы, избегая избыточного использования серверов.
  • Виртуальные машины могут свободно перемещаться между серверами без влияния на работу пользователя.

14:47 Управление серверами через гипервизоры

  • Гипервизоры позволяют видеть все серверы как единое целое.
  • Можно задавать политики для обеспечения отказоустойчивости, например, запуск виртуальных машин в разных дата-центрах.

15:38 Проблемы с гипервизорами

  • Гипервизоры отбирают часть ресурсов, что может замедлять работу виртуальных машин.
  • Для суперкомпьютеров часто используется bare metal, то есть «голое железо».

17:12 Концепция Docker-контейнеров

  • Docker-контейнеры эмулируют операционные системы, имея свою файловую систему и набор программ.
  • Каждый контейнер работает на одной операционной системе, создавая иллюзию независимости.

18:32 Аналогия с папками

  • Docker-контейнеры можно представить как папки с собственными дисками и программами.
  • Программы внутри контейнера видят только свои ресурсы, не затрагивая ресурсы операционной системы.

21:03 Преимущества Docker

  • Операционная система выступает посредником между контейнерами, обеспечивая изоляцию.
  • Контейнеры работают с усечёнными правами, не влияя на другие контейнеры и операционную систему.
  • Крупные компании используют Docker для эффективного распределения ресурсов серверов.

22:57 Управление версионностью

  • Docker помогает управлять версионностью библиотек и программ.
  • Разные версии программ могут использовать разные версии библиотек, что создаёт проблемы совместимости.
  • Docker позволяет изолировать версии программ и библиотек, предотвращая конфликты между ними.

24:22 Проблема зависимости в операционных системах

  • В одной операционной системе невозможно установить две версии программы одновременно.
  • Для запуска нескольких версий программ необходимо установить все их зависимости, что приводит к «dependency hell».
  • Докер-контейнеры решают эту проблему, изолируя каждую версию программы в своём контейнере.

25:15 Преимущества докер-контейнеров

  • Докер-контейнеры позволяют распределять ресурсы между разными программами.
  • Каждый контейнер представляет собой самостоятельную операционную систему с одной программой и её зависимостями.

25:48 Миксация контейнеров и операционных систем

  • Можно смешивать контейнеры с программами, установленными на операционной системе.
  • Докер-контейнер — это урезанный Linux, предназначенный для выполнения одной программы.

27:25 Использование докер-контейнеров в бизнесе

  • Пример компании с пятью сотрудниками, которая решила самостоятельно управлять сервером.
  • Использование докер-композита для управления несколькими контейнерами одновременно.

28:38 Что такое докер-композит

  • Докер-композит — это программа, которая позволяет запускать несколько контейнеров одновременно.
  • Описание контейнеров и их параметров хранится в одном текстовом файле.
  • Команда docker-compose up запускает все контейнеры, указанные в файле.

29:39 Управление инфраструктурой

  • Концепция инфраструктуры как кода упрощает управление докер-контейнерами.
  • Возможность запуска множества связок докер-контейнеров на одном сервере.

0:00
Привет Меня зовут Константин Шуткин Я
0:02
практикующий devops инженер это лекция
0:04
для itemp University вся информация об
0:08
проекте на сайте itemp university.com
0:11
там же бесплатные курсы по разным
0:13
тематикам от it до
0:15
психологии и Давайте
0:18
начинать в прошлый раз мы остановились
0:20
на Ну первые две лекции у нас были
0:22
посвящены следующим темам первая лекция
0:25
была как работает процессор вторая
0:27
лекция языки программирования и
0:30
как раз самые самое время перейти к тому
0:33
А как собственно программы запускаются
0:35
на компьютерах и как это вообще
0:37
исторически развивалось то есть опять же
0:39
лучше 5-10 минут уделить истории
0:42
какого-то процесса чтобы лучше понять
0:45
как мы пришли к сегодняшнему Дню Итак
0:48
значит были какие-то вот эти вот
0:49
огромные шкафы огромные компьютеры
0:52
первые в которых были там ламповые
0:54
процессоры и какие угодно
0:56
другие
0:58
и возник такой вопрос а как нам сделать
1:01
так чтобы можно было на одном компьютере
1:03
запускать
1:07
допустим много операционных систем чтобы
1:10
разные
1:12
пользователи Пользуясь разными
1:14
операционными системами достигали своих
1:15
там нужных каких-то результатов Ну то
1:18
есть с самого начала операционная
1:21
система на компьютере была всегда одна и
1:23
соответственно пользователи делили между
1:25
собой время за так сказать обладание
1:28
этим компьютером буквально писанию там
1:31
Вот
1:33
соответственно заранее бронировали за
1:35
собой этот компьютер и пользовались им
1:38
затем возник вопрос А как же сделать так
1:41
чтобы можно было одновременно работать
1:43
за одним и тем же компьютером и причём
1:46
разделять ресурсы этого компьютера то
1:48
есть процессор оперативную память и
1:51
долговременную память и так далее и
1:54
забегая так сказать впер возникла такая
1:56
концепция как виртуальная машина име с
2:00
ней такая концепция как гипервизор ну
2:02
точнее даже написали такую программу под
2:04
названием гипервизор которая умела
2:06
делать что которая умело эмулировать
2:09
железо компьютера то есть в этом смысле
2:12
операционная система она устроена таким
2:15
образом что она не знает общается ли она
2:17
с реальным железом или она общается с
2:20
эмулировать
2:24
так вот гипервизор – это скажем такая
2:28
программа которая умела эмулировать
2:30
железо компьютера то есть притворяться
2:32
железом компьютера и благодаря этому
2:34
стало возможным устанавливать много
2:36
операционных систем на один
2:38
компьютер и соответственно эти
2:41
операционные системы могли быть разными
2:42
Они могли одновременно работать и
2:44
использовать одну и ту же оперативную
2:45
память один и тот же процессор жёсткий
2:48
диск и так
2:50
далее опять же пропуская кучу значит
2:54
подробности упомяну о том что у
2:56
гипервизора есть существенный минус
3:00
не вдаваясь в какие-то технические
3:01
детали Почему дело в том что у
3:05
виртуальных машин Ну да и собственно вот
3:07
эти вот разные операционные системы
3:09
которые работают не напрямую с железом А
3:11
через посредство гипервизора они стали
3:14
называться виртуальные машины Ну потому
3:16
что они как бы не напрямую с железом
3:18
работают ну собственно через гипервизор
3:20
так
3:21
вот и оказалось что виртуальные машины у
3:25
них есть один
3:26
минус скажем так Если у вас есть
3:28
компьютер у которого есть к примеру 4 ГБ
3:32
оперативной памяти и четыре процессорных
3:34
ядра и вы разделили этот компьютер между
3:36
четырьмя виртуальными машинами каждый из
3:39
них вы дали по одному
3:41
гигабайте и по одному процессорного ядру
3:44
так вот в сумме количества ресурсов
3:46
доступных виртуальным машинам оно меньше
3:49
чем если вы будете
3:50
использовать одну операционную систему Я
3:53
надеюсь я Понятно выразился то есть вот
3:55
у вас ещ раз есть
3:57
сервер на НМ схематически изобразим Да
4:01
на нём есть соответственно четыре
4:02
процессорных ядра и 4 ГБ оперативной
4:07
памяти взяли поделили Это всё между
4:10
четырьмя операционными системами здесь
4:11
допустим
4:13
Windows здесь Linux здесь опять Windows
4:17
здесь Linux и это всё все эти четыре
4:20
операционные системы они не напрямую с
4:22
железным работают а через
4:25
посредство гипервизора то есть программы
4:27
которая отдельно Вот на этом компьютере
4:29
запущена прежде вот этих вот всех
4:30
виртуальных машин Так вот получается что
4:33
если сложить э ресурсы вот этих
4:35
виртуальных машин компьютерные Да по
4:37
процессору по оперативной памяти то в
4:39
сумме там уже окажется не 4 ГБ Ну а
4:41
скажем так 3 с поно и не четыре ядра а 3
4:44
с поно потому что часть ресурсов
4:47
запирает забирает себе гипервизор для
4:49
того чтобы как раз эмулировать это
4:50
железо и тра то есть посредник видимо и
4:53
в реальной жизни и в компьютерной жизни
4:55
он везде себе отъедается небольшой
4:57
кусочек и вот гипервизор он по сути что
4:59
это это просто посредник который от вот
5:01
этих операционных систем принимает
5:02
какие-то запросы и дальше транслирует их
5:05
к железу
5:07
Вот и эта концепция она в общем-то долго
5:10
довольно просуществовала Я так понимаю
5:12
десятки лет и до сих пор она существует
5:15
собственно все облака устроены на вот
5:17
этой вот концепции Несмотря на то что у
5:19
виртуальных машин есть вот этот
5:20
существенный оверхед так сказать на
5:24
железа тем не менее всё равно это
5:26
используется потому что это удобно
5:27
потому что ты можешь иметь несколько
5:28
операционных систем каждый устанавливает
5:30
свой софт они совершенно друг от друга
5:32
независимы они имеют собственные
5:34
мощности и так далее и так
5:37
далее значит после этой концепции возни
5:40
возникла такая концепция как контейнеры
5:43
докер не первым появился по-моему Вот
5:45
как раз lxc первым появился и может быть
5:47
даже было что-то до него потому что так
5:50
сказать некоторые течения они подводные
5:53
и скрыты от нас Мы в общем-то наверное
5:55
много имён и не знаем сколько там ещё
5:56
было всяких докеров LX и прочего так или
5:59
иначе возникла такая концепция что вы
6:01
запускаете некую такую вещь похожую на
6:04
виртуальную машину но её фундаментальное
6:07
отличие от обычной виртуальной машины
6:09
которая работает через через гипервизор
6:11
в том что
6:14
она работает значит на реальном железе
6:18
не на эмулировать
6:30
То есть получается вот ну с чисто
6:31
технической точки зрения то есть вот
6:33
допустим у меня есть сервер Ну жи Да ну
6:36
вот я вспоминаю как допустим логика
6:39
запуская компьютера я нажимаю кнопку
6:41
Пуск У меня программа обращается к
6:44
адресу
6:45
00 эта программа обращается к
6:49
бису Ну или как сейчас у эфи там что-то
6:51
другое сейчас появилось значит BIOS
6:54
после этого как бы оживляет я так
6:57
понимаю железо и начинает с какого-то
7:01
места первую
7:03
первую ячейку операционной системы
7:06
погружается операционная система потом
7:09
подгружаются все программы и вот я
7:12
работаю Да А в данной концепции
7:15
получается что после биоса нужен вот
7:17
этот супервизор запустить гипервизор да
7:19
то есть по сути по сути в данном случае
7:22
гипервизор это и есть та операционная
7:24
система Да грубо говоря которая То есть
7:26
это как бы Свер операционная сист
7:29
система с расширенным функционалом можно
7:31
сказать так
7:33
вот наверное даже некорректно называть
7:35
её операционной системой гипервизор –
7:37
это гипервизор это штука просто
7:38
предназначена для того чтобы иметь одну
7:40
единственную функцию запускать
7:41
виртуальные машины эмулировать Вот это
7:43
железо Да там ну и так далее название
7:46
есть допустим вот мы Windows Linux и так
7:47
Дале Да ну есть разные Да гипервизоры
7:49
допустим Zen довольно популярные пишется
7:52
вот
7:56
такн значит
7:59
War Ну короче много их
8:01
э всевозможные Кстати у Zen есть
8:04
опенсорс ная версия довольно удобно
8:06
пользоваться то есть там просто
8:07
буквально что тебе нужно это просто на
8:09
флешку вот этот гипервизор ну так же как
8:11
у бунта условно записать дальше Вот даже
8:13
тот компьютер который стоит там сервер в
8:15
Павлино на него можно без проблем такой
8:16
гипервизор накатить и уже дальше на него
8:18
вот эти виртуальные машины создавать в в
8:20
необъятно количестве фактически таким
8:22
образом можно получить приватное облако
8:24
то есть всё о чём когда говорят облако
8:25
имеется в виду это просто пул серверов
8:28
на который установлена куча гипервизоров
8:30
ничего более вот значит ещё один вопрос
8:34
значит это в общем-то Я так понимаю они
8:36
бывают проприетарные то есть частные Да
8:38
и бывает орные да вот а какие более
8:41
популярные прота
8:44
Ну как обычно в энтерпрайза крупных Да
8:48
как обычно Нет не своё а именно вот
8:51
проприетарные они используют чаще всего
8:53
хотя на данный момент самые популярные
8:56
осные гипервизоры – это
9:05
kvm viral Mach что-то в этом роде короче
9:08
через ядро Linux это всё
9:10
работает bas Vir Mach что-то в этом роде
9:13
потом вот этот Zen у него есть вообще
9:16
проприетарная штука но у него есть орная
9:19
версия под названием
9:21
xcp название конечно совершенно какое-то
9:25
длинное но тем не менее Вот собственно
9:27
удобная штука вот из Open насколько мне
9:30
известно куча всяких решений на базе kvm
9:33
потому что ВС что требуется для того
9:34
чтобы запустить это гипервизор это по
9:36
сути Linux вот ну ин да то есть
9:41
собственно е такой вопрос вот с чисто
9:43
такой формальной точки зрения вот у меня
9:45
стоит этот самый сервер компьютер То
9:48
есть я его устанавливаю этот гипервизор
9:51
и там что там командная строка типа там
9:53
командная строка и е Возможно у него
9:56
какой-нибудь са
10:00
крутится на который можно через браузер
10:02
зайти и через браузер создавать э
10:04
виртуальные машины и так далее а то есть
10:06
берш I адрес этого да заходишь на него и
10:09
видишь интерфейс по созданию виртуальных
10:10
машин Но вот конкретно вот этот xcp у
10:13
него немножко другая история у него Вот
10:15
это по умолчанию командная строка ты
10:17
можешь через командную строку создавать
10:18
виртуальные машины причём в качестве
10:21
базового дистрибутива там по-моему НС
10:22
используется А ты можешь также себе на
10:25
компьютер установить специальную
10:27
программу что-то там центр или что-то в
10:30
этом роде не помню название которая как
10:32
раз и позво Ну графическая программа
10:34
которая позволяет Ты просто IP адрес
10:36
сервера вбиваешь логине се на него и уже
10:38
можешь создавать виртуалки и так далее
10:40
Вот и то есть значит вот по этой схеме
10:44
уже нет да вопро ещё один вопрос Ну так
10:47
как вот получается что э железо
10:50
постоянно меняется Я не знаю насколько
10:52
там серьёзные изменения в плане Вот
10:55
именно железных составляющих но вероятно
10:57
они есть да то есть надо постоянно
10:59
версии вот этого гипервизора постоянно
11:02
обновлять постоянно не вообще что
11:04
собственно такое виртуализация это
11:06
виртуализация в первую очередь это вещь
11:07
которая работает через процессор то есть
11:10
критичен здесь именно процессор
11:12
процессор же вы не меняете постоянно он
11:14
как правило у вас один в этом смысле
11:15
сколько бы вы железа не прибавляли Не
11:17
прибавляли ну оно просто будет
11:18
появляться там да и всё вот собственно
11:21
Да поэтому даже нужно специально в бисе
11:25
иногда в процессоре включать вот эту
11:26
функцию виртуализации Ага у Intel это
11:29
там своя какая-то функция у AMD своя Ну
11:32
так или иначе это отдельная функция
11:34
именно
11:36
процессора Так теперь перейдём к докер
11:39
контейнерам А куда-то вот тряпочка
11:42
девалась здесь была же раньше вроде бы А
11:45
упало не нет в ба в банке это олех
11:48
посмотри пожалуйста нету Просто этой
11:50
банки так сейчас может сюда утащили Гай
11:53
все ищем тряпку без тряпки жизни нет о
11:58
ей водичку сменили Да ну здорово
12:01
спасибо Так ну и вот и существенный
12:04
минус у виртуальных машин Ну и кстати
12:05
плюсы тоже есть плюсы в том что вы
12:07
во-первых можете разную операционную
12:08
систему запускать совершенно а во-вторых
12:12
э помимо этого вы можете
12:16
э значит
12:21
ээ Да разделять ресурсы на уровне железа
12:24
То есть как бы у Вас допустим одно
12:25
процессорное ядро целиком полностью
12:27
отдано там одной виртуальной машине и на
12:29
него там не заезжает хотя там тоже есть
12:31
нюансы вообще говоря изначально
12:35
гипервизоры создавались именно такие что
12:38
по сути одна виртуальная машина могла
12:39
отра ресурсы у другой Вот но в целом
12:42
есть механизмы которые позволяют
12:45
ограничивать каждой виртуальной машине
12:47
её собственный кусочек железа и это то
12:49
за счёт чего облака собственно и
12:50
работают Значит теперь что касается
12:53
Докера и почему собственно на докер
12:56
стали все
12:59
да Ну может быть ещё Следует упомянуть
13:01
следующий момент что в случае с
13:03
виртуальными машинами появились такие
13:05
вещи которые позволяют запускать
13:07
виртуальную Маши такие гипервизоры
13:08
которые позволяют объединять сервера в
13:10
пул и запускать виртуальную машину
13:12
именно на пуле на кластере то есть в
13:15
этом смысле вот Облака как они работают
13:17
У вас есть там условно Там пять серверов
13:19
Вот и если ты хочешь запустить
13:21
виртуальную машину то её не на отдельном
13:22
сервере запускаешь А на пуле которая
13:26
объединяет все эти машины и ты даже не
13:28
знаешь куда это виртуальная машина у
13:29
тебя упадёт а упадёт она как правило на
13:31
сервер который наиболее свободен на
13:33
котором есть соответствующие ресурсы то
13:35
есть по сути это способ управлять
13:36
большим количеством серверов вот
13:38
представьте себе у вас 100 серверов и вы
13:41
хотите чтобы как бы нагрузка была
13:42
размазана максимально равномерно потому
13:44
что это реальная проблема бизнеса недо
13:46
утилизация и до виртуализации Да и до
13:48
докер контейнеров Проблема была очень
13:50
большая в том что вот организация купила
13:52
сервера а у него на 90% они не
13:55
используются вот просто на 90%
13:57
получается железо просто так стоит вот и
13:59
собственно Почему все на блока стали
14:01
переезжать потому что это способ вот
14:02
кусочек всего лишь сервера арендовать
14:04
одну виртуальную машино не более вот
14:07
значит и виртуальные машины они таким
14:09
образом могут переезжать с сервера на
14:10
сервер свободно если там один допустим
14:13
выключили она просто переехала причём
14:15
даже таким образом переезжать что
14:17
пользователь конечный не замечает что с
14:20
машиной что-то случилось Она для него
14:21
как работала так и работает то есть
14:23
настолько отработали вот эту всю
14:25
технологию что она стала работать
14:27
настолько совершенно Да так
14:29
можно ещё сразу да вот просто я я знаю
14:33
по себе что когда есть хоть какая-то
14:34
привязка к железу Да всегда как-то лучше
14:37
укладывается в вся эта информация То
14:39
есть получается что вот стоят говорится
14:43
куча шкафов Да с серверами они соединены
14:46
проводами проводами Да мы значит
14:49
устанавливаем гипервизор сразу на все их
14:52
Да а они уже видят там все эти IP адреса
14:55
через прово ну мы наверное как-то берём
14:58
в какой-то программе у пере э
15:01
гипервизоров условно говоря этих
15:03
серверов и эта программа она умеет как
15:06
бы видеть эти сервера все как единое
15:08
целое Ну в общем простым языком
15:10
выражаясь то есть неважно они в одной
15:12
комнате или на другом ко да да причём
15:14
там очень гибко всё это регулирует в том
15:16
плане
15:17
что ты можешь задавать такие политики
15:19
чтобы у тебя ради отказоустойчивости у
15:22
тебя одна виртуальная машина запустилась
15:23
допустим там в городе Москва другая в
15:26
Петербурге Чтобы если дата-центр в
15:27
Москве сгорит в общем-то Питер
15:29
подстрахуй да условно Вот то есть там
15:32
довольно много это уже вопрос как раз
15:34
про облака это наверное отдельную можно
15:36
лекцию про облака прочитать Вот ещё
15:39
такой сразу же вопрос А ну он может быть
15:41
не имеет отношения а вот все вот эти
15:43
суперкомпьютеры Да где грубо говоря
15:46
большая там эти фы там и прочее прочее
15:49
они тоже примерно из этой же серии Да ну
15:51
я сразу откровенно скажу я с
15:53
суперкомпьютера дело мало имел ну
15:55
максимум максимальная конфигурация с
15:57
которой я имел дело это там 40 серверов
16:00
значит у каждого из них 500 ГБ
16:02
оперативки и 40 ядер процессора вот
16:04
такой вот объём и там мы виртуально
16:06
машины не использовали как раз-таки
16:08
потому что гипервизор отбирает часть
16:10
ресурсов
16:12
вот да И как раз собственно Вот это
16:15
Learning и так далее мы запускали именно
16:16
на таких на это называется B Metal То
16:19
есть просто голое железо вот мы
16:21
запускали на голом железе потому что ещё
16:23
в чём проблема гипервизора как я уже
16:25
говорил
16:26
что ему же надо как-то распилить между
16:29
виртуальными машинами вот это вот ВС
16:30
ваше там процессорное время диск и так
16:33
далее и так далее И как правило вот
16:35
такие вот вещи
16:36
они не идеальны и они
16:39
могут как бы ну виртуальная машина может
16:42
работать просто тупее хуже медленнее чем
16:45
ты запустишь Ту же самую программу на
16:47
Metal сервере Вот такая история
16:50
отка Да значит затем возникла следующая
16:53
концепция А почему бы нам не запускать
16:56
такие псевдо виртуальные машины
16:59
на одной операционной системе в таком
17:01
случае нам не понадобится эмулировать
17:03
железо нам у нас гипервизор не будет
17:06
ничего там отъедается
17:36
по-английски так вот докер контейнер это
17:39
есть ни что иное как эмуляция
17:41
операционной системы я бы сказал так ну
17:43
в каком смысле В том смысле что каждый
17:45
докер контейнер
17:47
имеет свою файловую систему То есть у
17:49
него грубо говоря если переходи Ну так
17:51
сказать пользоваться аналогия из Windows
17:53
У него свой
17:54
дикт
17:56
свояка него сво программ запущенных в
17:59
нём и установленных в нём то есть Это
18:01
вроде бы как будто бы независимая
18:03
операционная система Но на самом деле
18:04
она таковой не
18:05
является на самом деле каждая Вот такая
18:08
вот штучка Ну докер контейнер Да это
18:13
просто обычные программы запущенные по
18:16
сути на операционной системе но с
18:18
иллюзией того что им принадлежит вот
18:21
столько-то диска там такая-то файловая
18:24
система Да что на нём установлены
18:25
такие-то программы и так далее То есть
18:27
основная основной механизм здесь это
18:29
Ну давайте представим себе Это так для
18:31
простоты вот все знают да диск C я
18:34
специально пользуюсь видовыми аналогия
18:37
потому что для линуса не всем знакомо
18:39
что там слш то есть Не каждый поймёт да
18:41
то есть вот всем известно диск C
18:43
Представьте себе что у вас В отдельной
18:44
папки Ну назовём её там допустим
18:50
докер В отдельной папке у вас лежит
18:55
значит несколько папок Одна называется
18:58
допустим
18:59
там фу другая бар третья баз Ну допустим
19:06
и в каждой из этих папок лежит ещё раз
19:09
папка диск
19:10
C в каждой из
19:13
них и представьте себе заходя вот в эту
19:17
вот папку внутрь этой папки вы вы не
19:20
можете грубо говоря выйти назад вы
19:23
видите только свой диск свои установлены
19:25
на м программы ВС только сво есть Я
19:29
надеюсь Понятно Ну на самом деле Ну как
19:31
бы компьютеры в компьютере Ну вот
19:33
виртуальная машина – это компьютер в
19:35
компьютере а здесь я не знаю как это
19:37
назвать Ну давайте для простоты назовём
19:38
компьютер в компьютере О’кей то есть
19:40
концепция похожа на виртуальную машину
19:42
но различие в том что операционная
19:44
система используется одна то есть
19:46
Windows грубо говоря у вас один а вот
19:48
этих вот папок в которых содержится своя
19:51
файловая система Их много и всё-таки
19:53
Костик я тебя попрошу для линокса потому
19:56
что мы сейчас здесь всячески бьёмся
19:57
отказаться
19:59
Не ну это для аналогии но ну в линуксе
20:01
хорошо в линуксе это СШ там условно
20:05
какая-то отдельная папка обычно это путь
20:07
War там
20:11
с вот а в ней соответственно лежат
20:15
файловые системы вот этих вот образов
20:17
контейнеров там РС в каждой из них свой
20:20
слш свой там War Ну в общем я надеюсь
20:23
плюс-минус понятна аналогия знатно
20:27
файловая система это Единственное что
20:29
грубо говоря
20:31
виртуалити также наличие запущенных
20:35
программ то есть имеется в виду что если
20:37
я запущу команду там топ Ну в линуксе
20:40
команда Топ она показывает программы
20:43
которые запущены в вашей операционной
20:46
системе так вот если я находясь внутри
20:48
докер контейнера запущу программу Топ то
20:51
я увижу не все программы которые
20:52
запущены вот на этой операционной
20:54
системе а только те программы которые
20:56
запущены непосредственно вот в моей вот
20:58
этой вот малень в Мом маленьком
21:00
компьютере можно да получается вот
21:04
первиз это был такой посредник между
21:06
виртуальными машинами А сейчас этот
21:08
посредник – это операционная систе
21:09
сейчас посредник – это операционная
21:11
система при этом особенность заключается
21:13
в том что с точки зрения операционной
21:16
системы каждый докер контейнер и
21:19
программы запущенные в нём это обычные
21:23
программы запущенные на этой же
21:24
операционной системе то есть грубо
21:26
говоря я программу запущенную внутри
21:28
контейнера могу увидеть как изнутри
21:30
контейнера так и снаружи от него в
21:33
отличие от виртуальных машин виртуальные
21:35
машины изолированы друг от друга я не
21:37
могу Ну там в общем с нюансами Да но в
21:40
целом гипервизор
21:41
он по-другому
21:44
разделяет пространство Да между
21:46
виртуальными машинами Вот И в чём плюс
21:48
такой схемы плюс заключается в том что
21:50
операционная система у вас всего лишь
21:52
одна никакого посредника по сути нет так
21:54
как все программы запущены в докер
21:56
контейнерах это обычные программы просто
21:58
эти программы они скажем так с усечённым
22:00
правами они не могут видеть то что
22:02
происходит в других контейнерах и вообще
22:04
на операционной системе То есть у них
22:06
такая иллюзия что они в своём маленьком
22:08
мирке таком существуют грубо говоря
22:10
Извините за такое Вольное изложение
22:13
А И
22:16
М что ещё следует добавить Ну вот
22:19
примерно Я надеюсь понятно что такое
22:20
докер контейнеры и здесь уже не
22:22
возникает того самого оверхед на железо
22:25
которое возникает в случае с
22:26
виртуальными машинами То есть вы можете
22:27
запустить много докер контейнеров и всё
22:30
это будет работать через одну
22:31
операционную систему и поэтому крупные
22:33
компании зачастую используют именно доке
22:36
для того чтобы распиливать вот эти
22:38
сервера между различными программами
22:40
процессами и так далее В чём ещё плюс
22:43
такого подхода я сейчас объясню Зачем
22:45
вообще нужны ещё виртуальные машины
22:46
Помимо того чтобы разделять железо
22:48
точнее Зачем нужны дохе контейнеры
22:50
Помимо того чтобы разделять железо они
22:52
нужны е для того чтобы управлять
22:55
версионность
22:58
говорил о том что существует такая вещь
23:00
как библиотека библиотека –
23:03
это набор функций Ну в общем программы
23:06
которые написаны
23:09
кем-то которые отлично умеют выполнять
23:11
какую-то определённую роль и эту
23:14
библиотеку можно себе в программу как
23:16
правило импортировать в виде отдельного
23:19
модуля То есть вы пишете там
23:21
импорт какой-нибудь там не
23:25
знаю допустим
23:28
обозначим Да и дальше использовать все
23:31
возможности этой библиотеки внутри у
23:32
себя в программе То есть вы по сути сами
23:34
код не пишете Вы просто используете
23:36
чужой написанный код так вот у библиотек
23:39
Да и собственно и у программ которые Их
23:41
используют есть такая вещь как
23:42
версионность Ну представьте себе Сегодня
23:44
я написал программу одну да а завтра
23:48
решил что хм а не оптимизировать ли мне
23:50
её и переписал её Но она уже стала
23:52
работать Совсем по-другому лучше но
23:54
по-другому и она уже несовместима там С
23:56
предыдущей версией условно получается
23:58
что у меня вчера была версия программы о
24:00
а сегодня версия программы
24:03
2 вот и проблема заключается в том что у
24:07
каждой из этих программ как правило
24:08
также и свои версии библиотек то есть
24:11
допустим программа с версией номер один
24:13
может использовать Tor Flow версии там
24:16
1,5 а программа с версией 2 может
24:18
использовать Tor Flow версии
24:21
2,5
24:23
и как правило операционная система
24:26
устроена Так что вы не можете
24:27
одновременно Две версии программы
24:28
установить То есть вы должны
24:30
использовать либо ту либо другую Если вы
24:32
хотите запускать несколько версий
24:34
программ то вам получается Нужно ещё и
24:35
все их зависимости тоже установить Ну в
24:37
общем это то что называется
24:40
ээ ад зависимости dependency Hell что-то
24:44
в этом роде То есть у вас вот возникает
24:46
такая ситуация что у вас в одной
24:47
операционной системе
24:50
нашпиговать у вас всё сломалось и
24:52
починить это не представляется возможным
24:53
просто заново всё лучше переустановить
24:55
так вот докер контейнеры Они как раз
24:57
служат решением этой
24:59
проблемы То есть у вас каждый докер
25:02
контейнер так как он видит только то что
25:03
установлено внутри него вы в него можете
25:06
установить там свои только версии по А
25:08
если вам нужно запустить другую версию
25:10
вы её запускаете в другом контейнере у
25:12
вас никакой мешанина не возникает у вас
25:13
эти контейнеры Они изолированы то есть
25:15
получается что докер контейнеры они вам
25:17
позволяют во-первых распиливать железо
25:19
между разными контейнерами А во-вторых
25:21
делить железо да А во-вторых ещё и
25:24
управлять версионность То есть каждый
25:26
докер контейнер – это такая грубо говоря
25:28
самостоятельная операционная система
25:31
которая в себе содержит как правило
25:32
всего лишь одну программу определённой
25:35
версии с определёнными зависимостями
25:38
вот
25:40
значит это то что та проблема которая
25:43
решает докер контейнеры также есть
25:44
вопросы по этой части у кого-нибудь ну
25:47
вроде бы всё понятно что действительно
25:49
каждый контейнер под свою конкретную
25:52
программу конкретной версии там года
25:55
выпуска конкретную там
26:00
[аплодисменты]
26:05
у общая операционная система одна а вот
26:08
в этом контейнере там
26:10
нюанс Да в общем-то Вы можете даже
26:13
миксовать ну В каком смысле Вы можете
26:16
Никто вам не мешает Если вы используете
26:17
контейнеры Я кстати отдельно остановлюсь
26:20
как контейнеры и в линуксе Установите
26:22
вдо
26:28
и внутри контейнеров То есть Вам не
26:30
мешает использовать все методы доступные
26:32
то правильно ли я понимаю что докер
26:34
контейнер – это такой очень сильно
26:35
урезанный Linux где ничего лишнего
26:38
только лишь под выполнение конкретной
26:41
программы конкретной версии как правило
26:43
одной только программы причём даже ни
26:46
двух ни трёх да то есть я описывал что
26:49
как бы в контейнере может много быть
26:50
программ их вообще может быть много но
26:53
Best Да это запускать всего лишь одну
26:55
программу внутри одного контейнера
26:58
распространяется докер образы
27:00
Именно таким образом что докер образ
27:03
содержит в себе всего лишь одну
27:04
программу так э Теперь наверное следует
27:08
перейти уже к тому как непосредственно
27:10
это используется Ну то есть Тема нашей
27:11
лекции – это использование docker в
27:13
малом и крупном бизнесе и вот как
27:15
собственно это вообще используется
27:17
разными
27:24
компаниями Ну допустим представим себе
27:26
компанию со штатом пять человек которая
27:30
значит сделала свой
27:32
интернет-магазин и надоели там всякие
27:35
хостинги всякие там геты и так далее и
27:38
она решила значит обрести независимость
27:40
наняла там системного администратора или
27:42
кого-нибудь
27:43
там значит
27:45
хорошего и приобрела
27:48
себе сервер приобрела себе сервер
27:52
где-нибудь Там есть такая
27:56
веть сво или в каком-нибудь дата-центре
27:59
за отдельную денежку его установить
28:01
дата-центр обеспечивает тебе
28:02
электричество обеспечивает тебе значит
28:05
хороший интернет и так далее Всё что
28:06
тебе нужно – это приобрести свой
28:08
компьютер и там его установить так вот и
28:11
затем компания вот озаботилось теми
28:13
вещами что а как мы будем сервером этим
28:15
собственно управлять то есть ээ Вот
28:18
хорошо есть допустим докер контейнер А
28:20
как мы их будем запускать какими там
28:21
командами Какими средствами и так далее
28:24
И как правило э для случаев Вот таких
28:27
вот небольших бизнесов используется
28:30
такая вещь как docker
28:37
compose Ну конечно здесь лучше было бы
28:40
демонстрировать так сказать на экране
28:41
как это всё работает Как это всё
28:43
выглядит и так далее но вкратце что
28:45
такое docker compose Это программа
28:48
которая умеет запускать несколько докер
28:50
контейнеров
28:52
одновременно при этом
28:54
описание того какие именно контейнеры
28:57
нужно запустить и с какими параметрами С
28:59
какими Там версиями и так далее делается
29:01
всего лишь в одном текстовом файле то
29:03
есть чтобы вам запустить допустим mysql
29:07
AP или там
29:09
ngx и что там ещё PHP да вы просто
29:13
пишете один всего лишь текстовый файл в
29:15
котором указываете версии там mysql PHP
29:17
apach или там mle Чего угодно те которые
29:20
вам
29:21
нужны и выполняете одну простую команду
29:24
docker compose Up у вас все эти
29:26
контейнеры поднимаются и можете таким
29:28
образом на своём этом сервере запустить
29:31
много таких вот ээ скажем так композ или
29:35
уж Чего уж Ну в общем много связок докер
29:37
контейнеров А И этим очень удобно
29:41
управлять Потому что есть такая
29:43
концепция инфраструктура как код Ну даже
29:46
здесь в данном случае наверное уже не
29:47
инфраструктура как код а
29:50
мм Ну О’кей для простоты Давайте назовём
29:53
пу