docker
This commit is contained in:
@@ -0,0 +1,432 @@
|
||||
\section{Docker Alapok}
|
||||
|
||||
\begin{frame}{Mi a Docker?}
|
||||
\begin{block}{Docker -- Konténerizációs platform}
|
||||
\begin{itemize}
|
||||
\item 2013-ban indult nyílt forráskódú projekt
|
||||
\item Alkalmazások csomagolása és futtatása izolált környezetben
|
||||
\item Könnyűsúlyú alternatíva a virtuális gépeknek
|
||||
\end{itemize}
|
||||
\end{block}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}{Docker -- Definíció}
|
||||
\begin{exampleblock}{Definíció}
|
||||
A Docker egy platform, amely lehetővé teszi alkalmazások és függőségeik \textbf{konténerekbe} csomagolását, amelyek bárhol futtathatók.
|
||||
\end{exampleblock}
|
||||
|
||||
\begin{block}{Filozófia}
|
||||
\textbf{``Build once, run anywhere''} -- egyszer csomagolva, bárhol fut.
|
||||
\end{block}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}{A probléma, amit megold}
|
||||
\begin{alertblock}{``Works on my machine'' probléma}
|
||||
\begin{itemize}
|
||||
\item Fejlesztői gépen működik, production-ön nem
|
||||
\item Különböző operációs rendszerek
|
||||
\item Eltérő függőség verziók
|
||||
\end{itemize}
|
||||
\end{alertblock}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}{A probléma -- Következmények}
|
||||
\begin{alertblock}{További problémák}
|
||||
\begin{itemize}
|
||||
\item Bonyolult telepítési folyamatok
|
||||
\item Nehezen reprodukálható hibák
|
||||
\item Inkonzisztens viselkedés környezetek között
|
||||
\end{itemize}
|
||||
\end{alertblock}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}{Docker megoldás}
|
||||
\begin{exampleblock}{Hogyan oldja meg?}
|
||||
\begin{itemize}
|
||||
\item Azonos környezet mindenhol (dev, test, prod)
|
||||
\item Összes függőség a konténerben
|
||||
\item Gyors telepítés és indítás
|
||||
\end{itemize}
|
||||
\end{exampleblock}
|
||||
|
||||
\begin{block}{Lényeg}
|
||||
Egyszer csomagolva, bárhol fut -- garantáltan!
|
||||
\end{block}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}{Miért használjunk Dockert? -- Fejlesztőknek}
|
||||
\begin{block}{Fejlesztői előnyök}
|
||||
\begin{itemize}
|
||||
\item Gyors setup -- percek helyett másodpercek
|
||||
\item Konzisztens környezet minden fejlesztőnél
|
||||
\item Izoláció -- egymástól független projektek
|
||||
\end{itemize}
|
||||
\end{block}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}{Miért használjunk Dockert? -- Gyakorlatban}
|
||||
\begin{exampleblock}{Gyakorlati előnyök}
|
||||
\begin{itemize}
|
||||
\item Új csapattag: \texttt{docker compose up} és kész
|
||||
\item Nincs ``nálam működik'' probléma
|
||||
\item Különböző Node.js verziók párhuzamosan
|
||||
\end{itemize}
|
||||
\end{exampleblock}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}{Miért használjunk Dockert? -- DevOps}
|
||||
\begin{block}{DevOps előnyök}
|
||||
\begin{itemize}
|
||||
\item Automatizálás -- CI/CD pipeline egyszerűsítése
|
||||
\item Skálázhatóság -- könnyű horizontális skálázás
|
||||
\item Mikroszolgáltatások -- ideális architektúra
|
||||
\end{itemize}
|
||||
\end{block}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}{Docker fő előnyök}
|
||||
\begin{block}{Összesítve}
|
||||
\begin{itemize}
|
||||
\item Hordozhatóság -- bárhol fut
|
||||
\item Könnyűsúlyú -- MB-ok VM GB-jai helyett
|
||||
\item Gyors indítás -- másodpercek
|
||||
\end{itemize}
|
||||
\end{block}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}{Docker vs Virtuális gépek -- VM jellemzői}
|
||||
\begin{block}{Virtuális gép (VM)}
|
||||
\begin{itemize}
|
||||
\item Teljes operációs rendszer minden VM-nek
|
||||
\item Hypervisor szükséges (VMware, VirtualBox)
|
||||
\item Lassabb indítás -- perceket vehet igénybe
|
||||
\end{itemize}
|
||||
\end{block}
|
||||
|
||||
\begin{exampleblock}{Szerkezet}
|
||||
Hardware $\rightarrow$ Host OS $\rightarrow$ Hypervisor $\rightarrow$ Guest OS $\rightarrow$ App
|
||||
\end{exampleblock}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}{Docker vs Virtuális gépek -- VM hátrányok}
|
||||
\begin{alertblock}{VM hátrányok}
|
||||
\begin{itemize}
|
||||
\item Nagy méret -- több gigabájt
|
||||
\item Több erőforrás igény -- CPU, memória, tárhely
|
||||
\item Teljes OS virtualizálás -- minden VM-nek saját kernel
|
||||
\end{itemize}
|
||||
\end{alertblock}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}{Docker vs Virtuális gépek -- Docker jellemzői}
|
||||
\begin{block}{Docker konténer}
|
||||
\begin{itemize}
|
||||
\item Osztott OS kernel a host-tal
|
||||
\item Docker Engine futtatja
|
||||
\item Gyors indítás -- másodpercek
|
||||
\end{itemize}
|
||||
\end{block}
|
||||
|
||||
\begin{exampleblock}{Szerkezet}
|
||||
Hardware $\rightarrow$ Host OS $\rightarrow$ Docker Engine $\rightarrow$ App
|
||||
\end{exampleblock}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}{Docker vs VM -- Kulcskülönbség}
|
||||
\begin{alertblock}{Kulcskülönbség}
|
||||
\begin{itemize}
|
||||
\item Alkalmazás szintű izoláció az OS kernelen
|
||||
\item Konténerek osztják a host kernel-t
|
||||
\item Kisebb méret -- megabájtok vs gigabájtok
|
||||
\end{itemize}
|
||||
\end{alertblock}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}{Architektúra összehasonlítás}
|
||||
\begin{center}
|
||||
\begin{tikzpicture}[node distance=0.25cm, scale=0.85, every node/.style={scale=0.85}]
|
||||
\node[font=\bfseries\footnotesize] at (-3, 4.5) {Virtuális gép};
|
||||
|
||||
\node[draw, rectangle, fill=blue!20, minimum width=2.5cm, minimum height=0.5cm, align=center, font=\scriptsize] (app1) at (-3, 3.8) {App A};
|
||||
\node[draw, rectangle, fill=blue!20, minimum width=2.5cm, minimum height=0.5cm, below=of app1, align=center, font=\scriptsize] (os1) {Guest OS};
|
||||
|
||||
\node[draw, rectangle, fill=blue!20, minimum width=2.5cm, minimum height=0.5cm, font=\scriptsize] (app2) at (-3, 2.2) {App B};
|
||||
\node[draw, rectangle, fill=blue!20, minimum width=2.5cm, minimum height=0.5cm, below=of app2, align=center, font=\scriptsize] (os2) {Guest OS};
|
||||
|
||||
\node[draw, rectangle, fill=green!20, minimum width=5.5cm, minimum height=0.5cm, below=of os2, align=center, yshift=-0.2cm, font=\scriptsize] (hypervisor) {Hypervisor};
|
||||
\node[draw, rectangle, fill=yellow!20, minimum width=5.5cm, minimum height=0.5cm, below=of hypervisor, align=center, font=\scriptsize] (hostos1) {Host OS};
|
||||
\node[draw, rectangle, fill=red!20, minimum width=5.5cm, minimum height=0.5cm, below=of hostos1, align=center, font=\scriptsize] (hw1) {Hardware};
|
||||
|
||||
\node[font=\bfseries\footnotesize] at (3, 4.5) {Docker konténer};
|
||||
|
||||
\node[draw, rectangle, fill=blue!20, minimum width=1.2cm, minimum height=0.5cm, align=center, font=\scriptsize] (dapp1) at (2, 3.8) {App A};
|
||||
\node[draw, rectangle, fill=blue!20, minimum width=1.2cm, minimum height=0.5cm, align=center, font=\scriptsize] (dapp2) at (3.3, 3.8) {App B};
|
||||
\node[draw, rectangle, fill=blue!20, minimum width=1.2cm, minimum height=0.5cm, align=center, font=\scriptsize] (dapp3) at (4.6, 3.8) {App C};
|
||||
|
||||
\node[draw, rectangle, fill=green!20, minimum width=5.5cm, minimum height=0.5cm, align=center, font=\scriptsize] (docker) at (3, 3) {Docker Engine};
|
||||
\node[draw, rectangle, fill=yellow!20, minimum width=5.5cm, minimum height=0.5cm, below=of docker, align=center, font=\scriptsize] (hostos2) {Host OS};
|
||||
\node[draw, rectangle, fill=red!20, minimum width=5.5cm, minimum height=0.5cm, below=of hostos2, align=center, font=\scriptsize] (hw2) {Hardware};
|
||||
\end{tikzpicture}
|
||||
\end{center}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}{Docker életciklus}
|
||||
\begin{center}
|
||||
\begin{tikzpicture}[node distance=2cm]
|
||||
\node[draw, rectangle, fill=blue!20, minimum width=2.5cm, minimum height=1cm, align=center] (dockerfile) {Dockerfile\\(utasítások)};
|
||||
|
||||
\node[draw, rectangle, fill=green!20, minimum width=2.5cm, minimum height=1cm, right=of dockerfile, align=center] (image) {Image\\(sablon)};
|
||||
|
||||
\node[draw, rectangle, fill=orange!20, minimum width=2.5cm, minimum height=1cm, right=of image, align=center] (container) {Container\\(futó app)};
|
||||
|
||||
\draw[->, thick] (dockerfile) -- (image) node[midway, above, font=\small] {build};
|
||||
\draw[->, thick] (image) -- (container) node[midway, above, font=\small] {run};
|
||||
|
||||
\node[draw, rectangle, fill=purple!20, minimum width=2.5cm, minimum height=1cm, below=of image, align=center] (registry) {Registry\\(Docker Hub)};
|
||||
|
||||
\draw[->, thick] (image) -- (registry) node[midway, right, font=\small] {push};
|
||||
\draw[->, thick] (registry) -- (image) node[midway, left, font=\small] {pull};
|
||||
\end{tikzpicture}
|
||||
\end{center}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}{Docker Engine}
|
||||
\begin{block}{Docker Engine -- A fő komponens}
|
||||
\begin{itemize}
|
||||
\item A Docker fő komponense
|
||||
\item Kliens-szerver architektúra
|
||||
\item 3 fő rész: Daemon, REST API, CLI
|
||||
\end{itemize}
|
||||
\end{block}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}{Docker Engine -- Részei}
|
||||
\begin{enumerate}
|
||||
\item \textbf{Docker Daemon (dockerd):} Háttérfolyamat, kezeli a konténereket
|
||||
\item \textbf{Docker CLI (docker):} Parancssor interfész
|
||||
\item \textbf{REST API:} Kommunikáció daemon és CLI között
|
||||
\end{enumerate}
|
||||
|
||||
\begin{exampleblock}{Működés}
|
||||
Parancs: \texttt{docker run nginx} \\
|
||||
CLI \textrightarrow{} REST API \textrightarrow{} Daemon \textrightarrow{} Image letöltés \& Konténer indítás
|
||||
\end{exampleblock}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}{Használati esetek -- Fejlesztés}
|
||||
\begin{block}{Fejlesztési környezet}
|
||||
\begin{itemize}
|
||||
\item Gyors projekt setup másodpercek alatt
|
||||
\item Különböző verziók párhuzamosan (Node 16, 18, 20)
|
||||
\item Csapat tagjai azonos környezetben dolgoznak
|
||||
\end{itemize}
|
||||
\end{block}
|
||||
|
||||
\begin{exampleblock}{Példa}
|
||||
Új fejlesztő csatlakozik: \texttt{git clone} + \texttt{docker compose up}\\
|
||||
$\Rightarrow$ Azonnal dolgozhat, telepítés nélkül
|
||||
\end{exampleblock}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}{Használati esetek -- Mikroszolgáltatások}
|
||||
\begin{block}{Mikroszolgáltatások}
|
||||
\begin{itemize}
|
||||
\item Minden szolgáltatás saját konténerben fut
|
||||
\item Független skálázás és deployment
|
||||
\item Könnyű verziókezelés
|
||||
\end{itemize}
|
||||
\end{block}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}{Használati esetek -- CI/CD}
|
||||
\begin{block}{CI/CD pipeline}
|
||||
\begin{itemize}
|
||||
\item Automatizált build és tesztelés
|
||||
\item Konzisztens deployment minden környezetben
|
||||
\item Gyors rollback hibás verzióról
|
||||
\end{itemize}
|
||||
\end{block}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}{Mi kerül konténerbe? -- Alapok}
|
||||
\begin{exampleblock}{Alapvető elemek}
|
||||
\begin{itemize}
|
||||
\item \textbf{Alap OS réteg:} Linux disztribúció (Alpine, Ubuntu)
|
||||
\item \textbf{Runtime:} Node.js futtatókörnyezet (pl. 18.x)
|
||||
\item \textbf{Függőségek:} npm csomagok (node\_modules mappa)
|
||||
\end{itemize}
|
||||
\end{exampleblock}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}{Mi kerül konténerbe? -- Alkalmazás}
|
||||
\begin{exampleblock}{Alkalmazás specifikus elemek}
|
||||
\begin{itemize}
|
||||
\item \textbf{Alkalmazás kód:} forrásfájlok (src/, index.js)
|
||||
\item \textbf{Konfigurációk:} package.json, környezeti beállítások
|
||||
\item \textbf{Indítási parancs:} npm start vagy node index.js
|
||||
\end{itemize}
|
||||
\end{exampleblock}
|
||||
|
||||
\begin{block}{Eredmény}
|
||||
Önálló, hordozható csomag, amely bárhol futtatható
|
||||
\end{block}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}{Mi NEM kerül konténerbe? -- Adatok}
|
||||
\begin{alertblock}{Perzisztens adatok}
|
||||
\begin{itemize}
|
||||
\item \textbf{Adatbázis adatok} -- volume-ban kell tárolni
|
||||
\item \textbf{Nagy méretű log fájlok} -- host-ra vagy log service-re
|
||||
\item \textbf{Feltöltött fájlok} -- user uploads, media files
|
||||
\end{itemize}
|
||||
\end{alertblock}
|
||||
|
||||
\begin{exampleblock}{Miért?}
|
||||
Konténer törléskor ezek az adatok elvesznének!
|
||||
\end{exampleblock}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}{Mi NEM kerül konténerbe? -- Biztonság}
|
||||
\begin{alertblock}{Biztonsági és development elemek}
|
||||
\begin{itemize}
|
||||
\item \textbf{Érzékeny konfigurációk} -- titkos kulcsok, jelszavak
|
||||
\item \textbf{Fejlesztői eszközök} -- debugging, testing tools
|
||||
\item \textbf{Build artifacts} -- ideiglenesen használt fájlok
|
||||
\end{itemize}
|
||||
\end{alertblock}
|
||||
|
||||
\begin{exampleblock}{Jó gyakorlat}
|
||||
Titkos kulcsok: Docker secrets vagy környezeti változók\\
|
||||
Dev tools: csak development image-ben
|
||||
\end{exampleblock}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}{Docker Desktop -- Mi az?}
|
||||
\begin{block}{Docker Desktop alkalmazás}
|
||||
\begin{itemize}
|
||||
\item Grafikus felületű alkalmazás Windows és macOS rendszerekhez
|
||||
\item Tartalmazza az összes szükséges Docker komponenst
|
||||
\item Beépített GUI konténerek és image-ek kezeléséhez
|
||||
\end{itemize}
|
||||
\end{block}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}{Docker Desktop -- Technológia}
|
||||
\begin{exampleblock}{Technológiai előnyök}
|
||||
\begin{itemize}
|
||||
\item Integrált Kubernetes támogatás
|
||||
\item WSL 2 backend Windows-on (Linux kernel)
|
||||
\item Automatikus frissítések
|
||||
\end{itemize}
|
||||
\end{exampleblock}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}{Docker Desktop -- Funkciók}
|
||||
\begin{block}{Fő funkciók}
|
||||
\begin{itemize}
|
||||
\item Konténerek vizuális monitorozása
|
||||
\item Resource használat követése (CPU, RAM)
|
||||
\item Volume és network kezelés GUI-n keresztül
|
||||
\end{itemize}
|
||||
\end{block}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}{Docker Desktop -- Kiegészítők}
|
||||
\begin{exampleblock}{Kiegészítők}
|
||||
\begin{itemize}
|
||||
\item Extension marketplace -- további funkciók
|
||||
\item Dev Environments támogatás
|
||||
\item Docker Scout -- biztonsági elemzés
|
||||
\end{itemize}
|
||||
\end{exampleblock}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}{Docker Desktop -- Telepítés}
|
||||
\begin{exampleblock}{Telepítési lépések}
|
||||
\begin{enumerate}
|
||||
\item Letöltés: \texttt{docker.com/products/docker-desktop}
|
||||
\item Telepítő futtatása
|
||||
\item Rendszer újraindítása (ha szükséges)
|
||||
\end{enumerate}
|
||||
\end{exampleblock}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}{Docker Desktop -- Ellenőrzés}
|
||||
\begin{exampleblock}{Ellenőrzés}
|
||||
\begin{enumerate}
|
||||
\item Docker Desktop indítása
|
||||
\item Ellenőrzés terminálban: \texttt{docker --version}
|
||||
\end{enumerate}
|
||||
\end{exampleblock}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}{Docker Desktop -- Windows és macOS}
|
||||
\begin{block}{Windows és macOS}
|
||||
\begin{itemize}
|
||||
\item \textbf{Docker Desktop ajánlott} -- grafikus telepítő
|
||||
\item Tartalmaz mindent: Docker Engine, CLI, Compose
|
||||
\item Automatikus frissítések
|
||||
\end{itemize}
|
||||
\end{block}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}{Docker Desktop -- Linux}
|
||||
\begin{alertblock}{Linux}
|
||||
\begin{itemize}
|
||||
\item \textbf{Docker Engine} közvetlenül telepíthető
|
||||
\item Docker Desktop opcionális (beta)
|
||||
\item Parancssorból: \texttt{apt install docker.io}
|
||||
\end{itemize}
|
||||
\end{alertblock}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}{Összefoglalás -- Docker lényege}
|
||||
\begin{block}{Docker = Modern konténerizáció}
|
||||
\begin{itemize}
|
||||
\item Alkalmazások izolált, hordozható csomagolása
|
||||
\item Könnyűsúlyú alternatíva a virtuális gépeknek
|
||||
\item ``Build once, run anywhere'' filozófia
|
||||
\end{itemize}
|
||||
\end{block}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}{Összefoglalás -- Előnyök}
|
||||
\begin{exampleblock}{Miért használjuk?}
|
||||
\begin{itemize}
|
||||
\item Gyors és könnyű deployment
|
||||
\item Hatékony erőforrás kihasználás
|
||||
\item Skálázható mikroszolgáltatások
|
||||
\end{itemize}
|
||||
\end{exampleblock}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}{Összefoglalás -- Fogalmak}
|
||||
\begin{block}{Build és futtatás}
|
||||
\begin{itemize}
|
||||
\item \textbf{Dockerfile:} Utasítások az image építéséhez
|
||||
\item \textbf{Image:} Csak olvasható sablon az alkalmazásról
|
||||
\item \textbf{Container:} Futó példány egy image-ből
|
||||
\end{itemize}
|
||||
\end{block}
|
||||
|
||||
\begin{exampleblock}{Folyamat}
|
||||
Dockerfile $\rightarrow$ build $\rightarrow$ Image $\rightarrow$ run $\rightarrow$ Container
|
||||
\end{exampleblock}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}{Összefoglalás -- Tárolás}
|
||||
\begin{block}{Tárolás és kommunikáció}
|
||||
\begin{itemize}
|
||||
\item \textbf{Registry:} Image-ek tárolása (pl. Docker Hub)
|
||||
\item \textbf{Volume:} Perzisztens adattárolás
|
||||
\item \textbf{Network:} Konténerek közötti kommunikáció
|
||||
\end{itemize}
|
||||
\end{block}
|
||||
|
||||
\begin{alertblock}{Következő lépések}
|
||||
Dockerfile készítés, image build, konténer kezelés, Docker Compose
|
||||
\end{alertblock}
|
||||
\end{frame}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user