telematics lec 02
This commit is contained in:
parent
bf020ed978
commit
bb3d6c3f63
|
@ -133,7 +133,7 @@ DevOps-инженер -- высококвалифицированный спец
|
|||
Используемые инструменты -- Jenkins, Docker, Kubernetes, Git, Приложения для управления инфраструктурой (Terraform), платформенные и облачные сервисы, утилиты мониторинга и оповещений.
|
||||
|
||||
\section{Система контейнеризации Docker}
|
||||
Виртуализация и контейнеризация
|
||||
\subsection{Виртуализация и контейнеризация}
|
||||
|
||||
Микросервисная архитектура -- это такой подход, при котором единое приложение строится как набор небольших сервисов, каждый из которых работает в собственном процессе и коммуницирует с остальными, используя легковесные механизмы. Такой подход получил распространение в середине 2010х годов в связи с развитием гибких практик разработки.
|
||||
|
||||
|
@ -146,36 +146,41 @@ DevOps-инженер -- высококвалифицированный спец
|
|||
\item повсеместное использование виртуализации
|
||||
\end{itemize}
|
||||
|
||||
Виртуализацция -- это технология с помощью которой на одном физическом устройстве можно создать несколько виртуальных компьютеров. На компьютере с одной ОС можно запустить несколько других ОС или приложений. ОС запускаются в виртуальной среде, но используется инфраструктура хоста и позволяет им работать на одном устройстве изолированно друг от друга.
|
||||
Виртуализацция -- это технология с помощью которой на одном физическом устройстве можно создать несколько виртуальных компьютеров. На компьютере с одной ОС можно запустить несколько других ОС или приложений. ОС запускаются в виртуальной среде, но используется инфраструктура хоста и позволяет им работать на одном устройстве изолированно друг от друга. ОС компьютера, на котором работает виртуальная среда, называется хост-системой, а ОС, которая запускается в этой виртуальной среде -- гостевой системой. Хостовая и гостевая ОС могут иметь взаимоисключающие компоненты, но виртуальная среда позволяет урегулировать эти конфликты.
|
||||
|
||||
Виртуальная среда создаётся при помощи программной или аппаратной схемы - гипервизора -- инструмента, обеспечивающего параллельное управление несколькими ОС на одном хосте.
|
||||
Виртуальная среда создаётся при помощи программной или аппаратной схемы -- гипервизора -- инструмента, обеспечивающего параллельное управление несколькими ОС на одном хосте.
|
||||
|
||||
Виртуализация. Типы гипервизоров
|
||||
\subsection{Виртуализация}
|
||||
Гипервизор -- это инструмент, обеспечивающий параллельное управление несколькими ОС на хосте.
|
||||
\begin{figure}[H]
|
||||
\centering
|
||||
\fontsize{12}{1}\selectfont
|
||||
\includesvg[scale=1.01]{pics/04-t-00-hyperv.svg}
|
||||
\end{figure}
|
||||
|
||||
Типы гипервизоров
|
||||
Гипервизоры:
|
||||
\begin{itemize}
|
||||
\item аппаратные -- VMWare ESX, Citrix Hyper-V
|
||||
\item устанавливаемые поверх базовой ОС -- MS Virtual PC
|
||||
\item гибридные --
|
||||
\item аппаратные -- VMWare ESX, Citrix XenServer, MS Hyper-V;
|
||||
\item устанавливаемые поверх базовой ОС -- MS Virtual PC, VMWare Workstation, VirtualBox;
|
||||
\item гибридные -- Citrix XenServer, Microsoft Hyper-V.
|
||||
\end{itemize}
|
||||
|
||||
Новый подход к виртуализации
|
||||
Назрела необходимость в ином подходе к построению архитектуры приложений, при котором ядро ОС поддерживают несколько изолированных экземпляров пользовательского пространства вместо одного (namespaces)\footnote{namespace -- это функция ядра Linux, позволяющая изолировать и виртуализировать глобальные системные ресурсы множества процессов.}. Возникновение контейнеризации -- контейнерной виртуализации. Контейнеризация использует ядро хост системы, оставаясь при этом не менее функциональной и обеспечивающей необходимую изоляцию.
|
||||
|
||||
Назрела необходимость в ином подходе к построению архитектуры приложений, при котором ядро ОС поддерживают несколько изолированных экземпляров пользовательского пространства вместо одного (namespaces). Возникновение контейнеризации -- контейнерной виртуализации. К использует ядро хост системы, оставаясь при этом не менее функциональной и обеспечивающей необходимую изоляцию.
|
||||
Контейнерная виртуализация -- это способ, при котором виртуальная среда запускается прямо из ядра хотовой ОС (то есть без установки другой ОС). В данном случае изоляцию ОС и приложений поддерживает контейнер. Контейнер содержит всё, что нужно для запускаемого в нём приложения: код, библиотеки, инструменты и настройки. Всё это упаковано в отдельный образ, работу которого запускает контейнерный движок.
|
||||
|
||||
КВ -- это способ, при котором вирт среда запускается прямо из ядра хотовой ОС (то есть без установки другой ОС). В данном случае изоляцию ОС и приложений поддерживает контейнер. Контейнер создержит всё, что нужно для запускаемого в нём приложения: код, библиотеки, инструменты и настройки. Всё это упаковано в отдельный образ, работу которого запускает контейнерный движок.
|
||||
В случае с контейнерами у нас есть базовая аппаратная инфраструктура (железа компьютера), ОС и движок, установленный на этой ОС. Движок управляет контейнерами, которые работают с библиотеками и зависимостями сами, в одиночку. В случае виртуальной машины у нас есть ОС на базовом оборудовании (наше железо), затем гипервизор, а затем виртуальные машины. У каждой ВМ внутри своя ОС. Контейнеры загружаются быстрее и работают эффективнее.
|
||||
|
||||
В случае с контейнерами у нас есть...
|
||||
|
||||
Проблемы контейнеризации
|
||||
Для контейнеров используется виртуализация на уровне ядра, то есть от гипервизора можно отказаться. однако:
|
||||
Проблемы контейнеризации. Для контейнеров используется виртуализация на уровне ядра, то есть от гипервизора можно отказаться. Однако:
|
||||
\begin{itemize}
|
||||
\item контейнео использует ядро хост системы, проблемы с безопасностью
|
||||
\item контейнер использует ядро хост системы, а отсюда проблемы с безопасностью;
|
||||
\item в контейнере может быть запущен экземпляр ОС только с тем же ядром, что и у хост ОС.
|
||||
\end{itemize}
|
||||
|
||||
Возможно получить доступ к возможностям Windows и Linux одновременно при помощи WSL.
|
||||
|
||||
Как решить проблемы проблемы контейнеризации
|
||||
Как решить проблемы проблемы контейнеризации:
|
||||
\begin{itemize}
|
||||
\item следование принципу единственной ответственности (Single responsibility principle)
|
||||
\item Всё необходимое должно быть в самом контейнере
|
||||
|
@ -183,9 +188,9 @@ DevOps-инженер -- высококвалифицированный спец
|
|||
\item контейнер должен быть эфемерным
|
||||
\end{itemize}
|
||||
|
||||
Контейнеризаторы приложений
|
||||
Контейнеризаторы приложений (Docker, LXC)
|
||||
|
||||
Докер -- платформа автоматизации и доставки приложений.
|
||||
Докер -- платформа автоматизации и доставки приложений с открытым исходным кодом. Платформа позволяет быстрее тестировать и выкладывать приложения, запускать на одной машине требуемое количество контейнеров.
|
||||
\begin{itemize}
|
||||
\item сервер dockerd
|
||||
\item API
|
||||
|
@ -194,16 +199,16 @@ DevOps-инженер -- высококвалифицированный спец
|
|||
|
||||
Компоненты докер
|
||||
\begin{itemize}
|
||||
\item хост -- хост ПК
|
||||
\item демон -- фоновый процесс, работающий на хосте постоянно и ожидающий команды управления. Имеет информацию обо всех контейнерах на хосте.
|
||||
\item клиент -- клиент при помощи с котрого пользователь взаимодействует с демоном
|
||||
\item хост -- хост ПК, компьютер, на котором работает докер.
|
||||
\item демон -- фоновый процесс, работающий на хосте постоянно и ожидающий команды управления. Имеет информацию обо всех контейнерах на хосте. Демон знает всё о контейнерах, запущенных на одном хосте -- сколько всего контейнеров, какие из них работают, где хранятся образы и так далее.
|
||||
\item клиент -- клиент при помощи с котрого пользователь взаимодействует с демоном. Это может быть консоль, API или графический интерфейс.
|
||||
\item образ -- неизменяемый образ приложения (можно представить как установочный диск)
|
||||
\item контейнер -- развёрнутое на основе образа и запущенное приложение.
|
||||
\item докерфайл -- файл-инструкция для сборки докер-образа. Строки файла это слои образа. Инструкции обрабатываются последовательно.
|
||||
\item docker registry -- репозиторий, в котором хранятся образы (докерхаб)
|
||||
\end{itemize}
|
||||
|
||||
Образ -- шаблон с набором инструкций, предназначенных для создания контейнера. Приложения упаковываются в образ
|
||||
Образ -- шаблон с набором инструкций, предназначенных для создания контейнера. Приложения упаковываются в образ, из которого затем создаются контейнеры.
|
||||
|
||||
Контейнер -- уже собранное, настроенное и запущенное на основе образа приложение в изолированное среде.
|
||||
|
||||
|
|
|
@ -0,0 +1,205 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="210mm"
|
||||
height="297mm"
|
||||
viewBox="0 0 210 297"
|
||||
version="1.1"
|
||||
id="svg2875"
|
||||
inkscape:version="1.0.2 (e86c870879, 2021-01-15)"
|
||||
sodipodi:docname="04-t-00-hyperv.svg">
|
||||
<defs
|
||||
id="defs2869" />
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="1.979899"
|
||||
inkscape:cx="209.14026"
|
||||
inkscape:cy="622.06381"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="layer1"
|
||||
inkscape:document-rotation="0"
|
||||
showgrid="true"
|
||||
inkscape:snap-bbox="true"
|
||||
inkscape:bbox-nodes="true"
|
||||
inkscape:window-width="1533"
|
||||
inkscape:window-height="1205"
|
||||
inkscape:window-x="46"
|
||||
inkscape:window-y="72"
|
||||
inkscape:window-maximized="0">
|
||||
<inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid3438" />
|
||||
</sodipodi:namedview>
|
||||
<metadata
|
||||
id="metadata2872">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1">
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:4.9389px;line-height:1.25;font-family:'PT Astra Serif';-inkscape-font-specification:'PT Astra Serif';stroke-width:0.264583"
|
||||
x="52.771973"
|
||||
y="197.55246"
|
||||
id="text3442"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan3440"
|
||||
x="52.771973"
|
||||
y="197.55246"
|
||||
style="stroke-width:0.264583">Хост компьютер</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:4.9389px;line-height:1.25;font-family:'PT Astra Serif';-inkscape-font-specification:'PT Astra Serif';stroke-width:0.264583"
|
||||
x="58.073284"
|
||||
y="189.61496"
|
||||
id="text3446"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan3444"
|
||||
x="58.073284"
|
||||
y="189.61496"
|
||||
style="stroke-width:0.264583">гипервизор</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:4.9389px;line-height:1.25;font-family:'PT Astra Serif';-inkscape-font-specification:'PT Astra Serif';stroke-width:0.264583"
|
||||
x="26.323286"
|
||||
y="179.8588"
|
||||
id="text3450"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan3448"
|
||||
x="26.323286"
|
||||
y="179.8588"
|
||||
style="stroke-width:0.264583">гостевая ОС</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:4.9389px;line-height:1.25;font-family:'PT Astra Serif';-inkscape-font-specification:'PT Astra Serif';stroke-width:0.264583"
|
||||
x="58.073284"
|
||||
y="179.8588"
|
||||
id="text3450-2"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan3448-8"
|
||||
x="58.073284"
|
||||
y="179.8588"
|
||||
style="stroke-width:0.264583">гостевая ОС</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:4.9389px;line-height:1.25;font-family:'PT Astra Serif';-inkscape-font-specification:'PT Astra Serif';stroke-width:0.264583"
|
||||
x="89.823288"
|
||||
y="179.8588"
|
||||
id="text3450-8"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan3448-9"
|
||||
x="89.823288"
|
||||
y="179.8588"
|
||||
style="stroke-width:0.264583">гостевая ОС</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:4.9389px;line-height:1.25;font-family:'PT Astra Serif';-inkscape-font-specification:'PT Astra Serif';stroke-width:0.264583"
|
||||
x="26.296759"
|
||||
y="171.09412"
|
||||
id="text3490"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan3488"
|
||||
x="26.296759"
|
||||
y="171.09412"
|
||||
style="stroke-width:0.264583">приложения</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:4.9389px;line-height:1.25;font-family:'PT Astra Serif';-inkscape-font-specification:'PT Astra Serif';stroke-width:0.264583"
|
||||
x="58.046757"
|
||||
y="171.09412"
|
||||
id="text3490-2"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan3488-8"
|
||||
x="58.046757"
|
||||
y="171.09412"
|
||||
style="stroke-width:0.264583">приложения</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:4.9389px;line-height:1.25;font-family:'PT Astra Serif';-inkscape-font-specification:'PT Astra Serif';stroke-width:0.264583"
|
||||
x="89.796761"
|
||||
y="171.09412"
|
||||
id="text3490-8"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan3488-86"
|
||||
x="89.796761"
|
||||
y="171.09412"
|
||||
style="stroke-width:0.264583">приложения</tspan></text>
|
||||
<rect
|
||||
style="fill:none;stroke:#000000;stroke-width:0.264999"
|
||||
id="rect3528"
|
||||
width="95.25"
|
||||
height="6.614573"
|
||||
x="23.8125"
|
||||
y="193.14583" />
|
||||
<rect
|
||||
style="fill:none;stroke:#000000;stroke-width:0.264999"
|
||||
id="rect3530"
|
||||
width="95.25"
|
||||
height="7.9375"
|
||||
x="23.8125"
|
||||
y="183.88542" />
|
||||
<rect
|
||||
style="fill:none;stroke:#000000;stroke-width:0.264999"
|
||||
id="rect3532"
|
||||
width="30.427082"
|
||||
height="7.9375"
|
||||
x="23.8125"
|
||||
y="174.625" />
|
||||
<rect
|
||||
style="fill:none;stroke:#000000;stroke-width:0.264999"
|
||||
id="rect3534"
|
||||
width="31.75"
|
||||
height="7.9375"
|
||||
x="55.5625"
|
||||
y="174.625" />
|
||||
<rect
|
||||
style="fill:none;stroke:#000000;stroke-width:0.264999"
|
||||
id="rect3536"
|
||||
width="30.427082"
|
||||
height="7.9375"
|
||||
x="88.635414"
|
||||
y="174.625" />
|
||||
<rect
|
||||
style="fill:none;stroke:#000000;stroke-width:0.264999"
|
||||
id="rect3538"
|
||||
width="30.427082"
|
||||
height="6.6145935"
|
||||
x="23.8125"
|
||||
y="166.6875" />
|
||||
<rect
|
||||
style="fill:none;stroke:#000000;stroke-width:0.264999"
|
||||
id="rect3540"
|
||||
width="31.75"
|
||||
height="6.6145935"
|
||||
x="55.5625"
|
||||
y="166.6875" />
|
||||
<rect
|
||||
style="fill:none;stroke:#000000;stroke-width:0.264999"
|
||||
id="rect3542"
|
||||
width="30.427084"
|
||||
height="6.6145935"
|
||||
x="88.635414"
|
||||
y="166.6875" />
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 6.5 KiB |
Loading…
Reference in New Issue