Skip to content

Commit d655ad5

Browse files
committed
Přidat prezentaci kontejnery
1 parent cee0b2b commit d655ad5

2 files changed

Lines changed: 311 additions & 0 deletions

File tree

156 KB
Binary file not shown.
Lines changed: 311 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,311 @@
1+
\documentclass{beamer}
2+
\usepackage[utf8]{inputenc}
3+
\usepackage[T1]{fontenc}
4+
\usepackage[czech]{babel}
5+
6+
\setbeamerfont{title}{size=\LARGE}
7+
8+
\title{Kontejnery}
9+
\author{Eliška Jégrová}
10+
\date{28. 11. 2025}
11+
12+
% pro obrázky a kreslení
13+
\usepackage{tikz}
14+
\usetikzlibrary{positioning}
15+
\usepackage{graphicx}
16+
\usepackage{datetime}
17+
\usepackage{svg}
18+
\usepackage{listings}
19+
\usepackage{dirtree}
20+
21+
% vlastní příkaz pro tildy
22+
\newcommand{\ts}{\raisebox{-0.25em}{\textasciitilde}}
23+
24+
\begin{document}
25+
26+
\frame{\titlepage}
27+
28+
\begin{frame}{Obsah}
29+
\tableofcontents
30+
\end{frame}
31+
32+
\section{Úvod}
33+
34+
\begin{frame}{It works on my machine!}
35+
\begin{itemize}
36+
\item Aplikace často funguje na vývojářově počítači, ale ne na serveru.
37+
\item Na každém stroji může být jiná verze knihoven, balíčků nebo konfigurace.
38+
\item Kontejner používá \textbf{vlastní souborový systém} oddělený od zbytku systému:
39+
\begin{itemize}
40+
\item obsahuje potřebné programy, knihovny a konfiguraci,
41+
\item všude vypadá stejně, bez ohledu na konkrétní stroj.
42+
\end{itemize}
43+
\item Stejný kontejner tedy můžeme spustit na různých počítačích
44+
a očekávat \textbf{stejné prostředí i chování aplikace}.
45+
\end{itemize}
46+
\end{frame}
47+
48+
\begin{frame}{Co je kontejner a jak se liší od virtuálky}
49+
\begin{itemize}
50+
\item \textbf{Kontejner}
51+
\begin{itemize}
52+
\item běžící proces s vlastním pohledem na souborový systém,
53+
\item má izolované prostředí (procesy, síť),
54+
\item sdílí stejný kernel s hostitelským systémem.
55+
\end{itemize}
56+
57+
\item \textbf{Virtuální stroj}
58+
\begin{itemize}
59+
\item běží v něm celý operační systém včetně vlastního kernelu,
60+
\item emuluje „celý počítač“ (CPU, disk, síťová karta),
61+
\item je těžší na zdroje a startuje pomaleji.
62+
\end{itemize}
63+
64+
\end{itemize}
65+
\end{frame}
66+
67+
\begin{frame}{Sjednocení a izolace}
68+
\begin{itemize}
69+
\item \textbf{Sjednocení prostředí}
70+
\begin{itemize}
71+
\item stejný obraz kontejneru můžeme použít na více strojích,
72+
\item ve vývoji, testu i produkci běží aplikace ve stejném prostředí,
73+
\item odpadá „u mě to funguje, ale na serveru ne“ kvůli rozdílným verzím balíčků.
74+
\end{itemize}
75+
76+
\item \textbf{Izolace služeb}
77+
\begin{itemize}
78+
\item každá služba může běžet ve svém vlastním kontejneru,
79+
\item chyby nebo špatná konfigurace jedné služby méně ovlivní zbytek systému,
80+
\item v každém kontejneru může být jiná verze programu nebo knihovny,
81+
aniž by si navzájem překážely.
82+
\end{itemize}
83+
\end{itemize}
84+
\end{frame}
85+
86+
\begin{frame}{Sdílení vrstev}
87+
\begin{itemize}
88+
\item Vrstvy obrazu jsou \textbf{jen pro čtení} a dají se \textbf{sdílet}:
89+
\begin{itemize}
90+
\item více obrazů může používat stejné spodní vrstvy,
91+
\item více kontejnerů z jednoho obrazu sdílí všechny jeho vrstvy.
92+
\end{itemize}
93+
94+
\item Každý kontejner má navíc jen svou \textbf{zapisovatelnou vrstvu}:
95+
\begin{itemize}
96+
\item tam se ukládají změny (nové soubory, logy, dočasná data),
97+
\item spodní vrstvy zůstávají stejné pro všechny.
98+
\end{itemize}
99+
100+
\item Výhody sdílení vrstev:
101+
\begin{itemize}
102+
\item šetří místo na disku – stejné soubory nejsou uloženy vícekrát,
103+
\item rychlejší stažení nových obrazů – znovu se stahují jen nové vrstvy,
104+
\item rychlejší start kontejnerů – většina dat už je lokálně k dispozici.
105+
\end{itemize}
106+
\end{itemize}
107+
\end{frame}
108+
109+
\begin{frame}{Obraz, kontejner a vrstvy}
110+
\begin{itemize}
111+
\item \textbf{Kontejner}:
112+
\begin{itemize}
113+
\item běžící instance vytvořená z obrazu,
114+
\item vypadá jako samostatný souborový systém,
115+
\end{itemize}
116+
117+
\item \textbf{Obraz kontejneru} (image):
118+
\begin{itemize}
119+
\item obsahuje nainstalovaný systém / aplikaci a její závislosti,
120+
\item je pouze pro čtení.
121+
\end{itemize}
122+
123+
124+
125+
\item \textbf{Vrstvy obrazu}:
126+
\begin{itemize}
127+
\item obraz je složený z několika \textbf{vrstev},
128+
\item každá vrstva obsahuje změny oproti předchozí
129+
(přidané soubory, úpravy, smazání),
130+
\item všechny vrstvy obrazu jsou jen pro čtení.
131+
\end{itemize}
132+
133+
\item \textbf{Vrstva kontejneru}:
134+
\begin{itemize}
135+
\item kontejner používá všechny vrstvy obrazu,
136+
\item navíc má svou \textbf{zapisovatelnou vrstvu} pro změny.
137+
\end{itemize}
138+
139+
140+
\end{itemize}
141+
\end{frame}
142+
143+
144+
\begin{frame}{Vrstvy aplikací a systému}
145+
\begin{itemize}
146+
\item \textbf{Sdílení vrstev}:
147+
\begin{itemize}
148+
\item více obrazů může sdílet stejné spodní vrstvy,
149+
\item více kontejnerů ze stejného obrazu sdílí všechny jeho vrstvy,
150+
\end{itemize}
151+
\end{itemize}
152+
\vspace{1em}
153+
154+
\centering
155+
\begin{tikzpicture}[
156+
box/.style={draw, thick, minimum width=3cm, minimum height=0.8cm, align=center},
157+
smallbox/.style={draw, thick, minimum width=1.4cm, minimum height=0.6cm, align=center}
158+
]
159+
160+
% spodní vrstva – Základní systém uprostřed
161+
\node[box, minimum width=4.5cm] (base) at (0,0) {Základní systém};
162+
163+
% prostřední vrstva - Databáze / Web
164+
\node[box, minimum width=4cm] (db) at (-3,2) {Databáze};
165+
\node[box, minimum width=4cm] (web) at ( 3,2) {Web};
166+
167+
% horní aplikace – trochu dál od sebe nad Webem
168+
\node[box] (flask) at (0.6,4) {Flask};
169+
\node[box] (django) at (4.2,4) {Django};
170+
171+
% malé boxy pod Flask/Django (posunuté do stran, aby nelezly do čar)
172+
\node[smallbox] (fmid) at (-0.6,3) {};
173+
\node[smallbox] (dmid) at (5.7,3) {};
174+
175+
% nové malé boxy pod Databází a Webem (jen vizuální, bez dalšího spojení)
176+
\node[smallbox] (dbleft) at (-4.5,1) {}; % "pod levým koncem" Databáze
177+
\node[smallbox] (webright) at ( 4.5,1) {}; % "pod pravým koncem" Webu
178+
179+
% Databáze/Web přímo na Základní systém
180+
\draw (db.south) -- (base.north west);
181+
\draw (web.south) -- (base.north east);
182+
183+
% Databáze -> levý prázdný obdélník
184+
\draw (db.south) -- (dbleft.north);
185+
186+
% Web -> pravý prázdný obdélník
187+
\draw (web.south) -- (webright.north);
188+
189+
% Flask/Django -> jejich malé boxy
190+
\draw (flask.south) -- (fmid.north);
191+
\draw (django.south) -- (dmid.north);
192+
193+
% Flask/Django připojené přímo na Web
194+
\draw (flask.south) -- (web.north west);
195+
\draw (django.south) -- (web.north east);
196+
197+
\end{tikzpicture}
198+
\end{frame}
199+
200+
\begin{frame}{Docker Hub, Docker a Podman}
201+
\begin{itemize}
202+
\item \textbf{Docker}
203+
\begin{itemize}
204+
\item původní a nejznámější nástroj pro práci s kontejnery,
205+
\item používá vlastní démon (\texttt{dockerd}), ke kterému se klient \texttt{docker} připojuje.
206+
\end{itemize}
207+
208+
\item \textbf{Podman}
209+
\begin{itemize}
210+
\item na Fedoře se používá místo Dockeru,
211+
\item nástroj pro kontejnery, kde jsou příkazy velmi podobné (\texttt{podman run}, \texttt{podman ps}, \dots).
212+
213+
\end{itemize}
214+
215+
\item \textbf{Docker Hub}
216+
\begin{itemize}
217+
\item veřejný server (registr), kde jsou uložené obrazy kontejnerů,
218+
\item najdeme tam jak oficiální obrazy (distribuce, databáze, web servery),
219+
\item tak i obrazy vytvořené uživateli.
220+
\end{itemize}
221+
222+
\end{itemize}
223+
\end{frame}
224+
225+
\begin{frame}[fragile]{Stažení obrazu a první kontejner}
226+
\begin{itemize}
227+
\item Stažení obrazu (pokud ještě není lokálně):
228+
\end{itemize}
229+
\begin{verbatim}
230+
$ podman pull fedora
231+
\end{verbatim}
232+
233+
\begin{itemize}
234+
\item Spuštění kontejneru s interaktivním shellem:
235+
\end{itemize}
236+
\begin{verbatim}
237+
$ podman run -it --rm ubuntu
238+
\end{verbatim}
239+
240+
\begin{itemize}
241+
\item \texttt{-it} – interaktivní režim (terminál),
242+
\item \texttt{-{}-rm} – po ukončení shellu se kontejner smaže,
243+
\item \texttt{ubuntu} – jméno obrazu,
244+
\end{itemize}
245+
\end{frame}
246+
247+
\begin{frame}[fragile]{Seznam kontejnerů a obrazů}
248+
\begin{itemize}
249+
\item Běžící kontejnery:
250+
\end{itemize}
251+
\begin{verbatim}
252+
$ podman ps
253+
\end{verbatim}
254+
255+
\begin{itemize}
256+
\item Všechny kontejnery (včetně ukončených):
257+
\end{itemize}
258+
\begin{verbatim}
259+
$ podman ps -a
260+
\end{verbatim}
261+
262+
\begin{itemize}
263+
\item Lokálně dostupné obrazy:
264+
\end{itemize}
265+
\begin{verbatim}
266+
$ podman images
267+
\end{verbatim}
268+
269+
\begin{itemize}
270+
\item Hodí se pro kontrolu:
271+
\begin{itemize}
272+
\item jestli kontejner ještě běží,
273+
\item z jakého obrazu byl vytvořen,
274+
\item které obrazy už zabírají místo na disku.
275+
\end{itemize}
276+
\end{itemize}
277+
\end{frame}
278+
279+
\begin{frame}[fragile]{Zastavení a mazání kontejnerů a obrazů}
280+
\begin{itemize}
281+
\item Zastavení běžícího kontejneru:
282+
\end{itemize}
283+
\begin{verbatim}
284+
$ podman stop <id_nebo_jmeno>
285+
\end{verbatim}
286+
287+
\begin{itemize}
288+
\item Smazání (ukončeného) kontejneru:
289+
\end{itemize}
290+
\begin{verbatim}
291+
$ podman rm <id_nebo_jmeno>
292+
\end{verbatim}
293+
294+
\begin{itemize}
295+
\item Smazání obrazu:
296+
\end{itemize}
297+
\begin{verbatim}
298+
$ podman rmi <image>
299+
\end{verbatim}
300+
301+
\begin{itemize}
302+
\item \texttt{<id\_nebo\_jmeno>} získáš z \texttt{podman ps -a},
303+
\item \texttt{<image>} získáš z \texttt{podman images}
304+
(může to být jméno nebo ID obrazu),
305+
\item obraz nelze smazat, pokud z něj ještě existují kontejnery –
306+
ty je potřeba nejdříve zastavit a odstranit.
307+
\end{itemize}
308+
\end{frame}
309+
310+
311+
\end{document}

0 commit comments

Comments
 (0)