From dbd04404f1f19723438709a7a8cb24de49431cad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Sk=C3=B3rzewski?= Date: Wed, 27 Mar 2024 08:15:55 +0100 Subject: [PATCH] Lab 4 --- IUM_04.Konteneryzacja.ipynb | 44 ++++++++++++++----------------------- 1 file changed, 16 insertions(+), 28 deletions(-) diff --git a/IUM_04.Konteneryzacja.ipynb b/IUM_04.Konteneryzacja.ipynb index bde53a7..0d02559 100644 --- a/IUM_04.Konteneryzacja.ipynb +++ b/IUM_04.Konteneryzacja.ipynb @@ -8,14 +8,8 @@ } }, "source": [ - "![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n", - "
\n", "

Inżynieria uczenia maszynowego

\n", - "

4. Konteneryzacja [laboratoria]

\n", - "

Tomasz Ziętkiewicz (2022)

\n", - "
\n", - "\n", - "![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)" + "

4. Konteneryzacja [laboratoria]

" ] }, { @@ -43,15 +37,11 @@ "## 1. Konteneryzacja\n", "- Konteneryzacja to metoda tworzenia lekkich, odizolowanych środowisk uruchomieniowych\n", "- Różnica między konteneryzacją a maszynami wirtualnymi:\n", - " - Wirtualizacja na poziomie systemu operacyjnego a nie sprzętu\n", - " - Konteneryzacja jest lżejsza: kontener używa tego samego jądra (kernel) co system hosta - mniejszy narzut\n", + " - Wirtualizacja na poziomie systemu operacyjnego, a nie sprzętu\n", + " - Konteneryzacja jest lżejsza: kontener używa tego samego jądra (*kernel*) co system hosta - mniejszy narzut\n", " - Konteneryzacja zapewnia gorszy stopień izolacji od hosta\n", " - Dzięki dostępnym narzędziom i infrastrukturze kontenery są łatwiejsze w utrzymywaniu i bardziej przenośne\n", - "- Ułatwiają:\n", - " - rozwój,\n", - " - uruchamianie\n", - " - i dostarczanie\n", - "aplikacji." + "- Kontenery ułatwiają rozwój, uruchamianie i dostarczanie aplikacji." ] }, { @@ -80,10 +70,9 @@ "source": [ "## 1.1 Docker\n", "- Najpopularniejszy obecnie system konteneryzacji\n", - "- Działa w m.in. na systemach Linux, Windows i Max OS\n", + "- Działa w m.in. na systemach Linux, Windows i Mac OS\n", "- Udostępnia narzędzia i serwisy ułatwiające korzystanie, zarządzanie i dzielenie się kontenerami\n", "- Docker umożliwia stworzenie paczki zawierającej sam program jak i środowisko, w którym ma być on uruchomiony\n", - " \n", "- Dokumentacja: https://docs.docker.com/get-started/\n", "
" ] @@ -113,10 +102,10 @@ }, "source": [ "## 1.2 Jak zacząć?\n", - " - Na komputerach w laboratoriach: https://laboratoria.wmi.amu.edu.pl/en/issues/docker/\n", + " - Na komputerach w laboratoriach: https://laboratoria.wmi.amu.edu.pl/problemy/docker\n", " - Lokalnie: [instalacja](https://docs.docker.com/engine/install/)\n", " - Możliwa zarówno pod Linux, Windows i MacOS.\n", - " - Kontenery Linuxowe można uruchamiać również pod Windowsem (za pomocą Docker Desktop lub WSL 2 (Windows Subsystem for Linux). Pod spodem oba używają maszyny wirtualnej (Hyper-V) z Linuxem, w której uruchamiane są kontenery [link](https://www.docker.com/blog/docker-hearts-wsl-2/)" + " - Kontenery linuxowe można uruchamiać również pod Windowsem - za pomocą Docker Desktop lub WSL 2 (Windows Subsystem for Linux). Pod spodem oba używają maszyny wirtualnej (Hyper-V) z Linuxem, w której uruchamiane są kontenery ([tak to działa w teorii](https://www.docker.com/blog/docker-hearts-wsl-2), a [tak to można uruchomić](https://dev.to/bowmanjd/install-docker-on-windows-wsl-without-docker-desktop-34m9))" ] }, { @@ -131,7 +120,7 @@ "- ```docker help [polecenie]``` - wyświetla listę dostępnych poleceń dockera lub opis podanego polecenia. Rozbudowana dokumentacja poleceń: https://docs.docker.com/engine/reference/commandline/docker/\n", "- ```docker run``` - uruchamia istniejący obraz tworząc kontener. Przykładowe wywołania:\n", " - ```docker run -i -t ubuntu```
\n", - " Uruchamia kontener z obrazu \"ubuntu\", allokuje terminal (`-t`) i ustawia tryb \"interaktywny\" (`-i`), dzięki czemu dostajemy terminal \"wenątrz\" kontenera i możemy wywoływać w nim polecenia\n", + " Uruchamia kontener z obrazu \"ubuntu\", alokuje terminal (`-t`) i ustawia tryb \"interaktywny\" (`-i`), dzięki czemu dostajemy terminal \"wenątrz\" kontenera i możemy wywoływać w nim polecenia\n", "\n", " - ```docker run -p 8080:8080 jenkins/jenkins:lts```
\n", " Uruchomi kontener z Jenkinsem, w wersji \"LTS\". Jeśli obraz Jenkins nie był wcześniej zbudowany/pobrany na lokalną maszynę, automatycznie zostanie pobrany z [Docker Hub](https://hub.docker.com/r/jenkins/jenkins).\n", @@ -165,7 +154,7 @@ "- ```docker start CONTAINER_ID``` - uruchamia ponownie kontener\n", "- ```docker system df``` - pokazuje miejsce zajęte przez obrazy, kontenery i woluminy\n", "- ```docker system prune``` - usuwa nieużywane obrazy i kontenery, zazwyczaj zwalniając sporo miejsca na dysku\n", - "- ```docker exec``` - " + "- ```docker exec``` - uruchamia polecenie wewnątrz działającego kontenera" ] }, { @@ -181,7 +170,7 @@ " - Poprzez `docker exec` - wywołanie polecenia w działającym kontenerze\n", " - Poprzez port zmapowany przez flagę `-p` (np. REST API albo interfejs w przegląrce)\n", " - Przez system plików: \n", - " - bind mount: podmontowanie katalogów hosta w kontenerze poprzez flagę `-v` [dokumentacja](https://docs.docker.com/engine/reference/commandline/run/#mount-volume--v---read-only)\n", + " - bind mount: podmontowanie katalogów hosta w kontenerze poprzez flagę `-v`; dokumentacja [tu](https://docs.docker.com/reference/cli/docker/container/run/#mount) i [tam](https://docs.docker.com/reference/cli/docker/container/run/#read-only)\n", " - volumes: https://docs.docker.com/storage/volumes/" ] }, @@ -194,7 +183,7 @@ }, "source": [ "# Zadanie 1 [na zajęciach]\n", - "1. Zainstaluj Docker (lub skorzystaj z https://laboratoria.wmi.amu.edu.pl/en/issues/docker/)\n", + "1. Zainstaluj Docker (lub skorzystaj z https://laboratoria.wmi.amu.edu.pl/problemy/docker)\n", "2. Uruchom obraz `ubuntu` w trybie interaktywnym z terminalem (`docker run -ti ubuntu`)\n", "\n", "Poniższe punkty wywołujemy wewnątrz kontenera (w otwartym właśnie terminalu):\n", @@ -204,7 +193,7 @@ "5. Jaki jest bieżący katalog? (polecenie `pwd`)\n", "5. Jaki procesor jest widoczny w środku kontenera? Czy jest to procesor Twojej maszyny? (`lscpu`)\n", "6. Ile wolnego miejsca na dysku jest widoczne wewnątrz kontenera (`df -h`)? Czy jest to zgodne z tym, co pokazuje maszyna hosta?\n", - "7. Sprawdź ile dostępnej pamięci RAM widać w konenerze (`free -h`). Czy zgadza się to z wynikiem na maszynie hosta?\n", + "7. Sprawdź, ile dostępnej pamięci RAM widać w konenerze (`free -h`). Czy zgadza się to z wynikiem na maszynie hosta?\n", "8. Spróbuj uruchomić jedno z popularnych narzędzi Linuksowych, dostępnych na maszynie hosta (np. `vim`, `less`, `htop`). Czy udało się je uruchomić?\n", "9. Zainstaluj w kontenerze jedno z brakujących narzędzi, np: `apt update; apt install htop`\n", "10. Uruchom następujące polecenie:
\n", @@ -233,11 +222,10 @@ "## 1.4 Dockerfile\n", "\n", " - Dokumentacja: https://docs.docker.com/engine/reference/builder/\n", - "\n", " - Dockerfile składa się z serii poleceń.\n", - " - Polecenia dockera są pisane WIELKIMI LITERAMI\n", - " - Wywołanie każdego polecenia tworzy nową warstwę (*layer*)\n", - " - Jeśli zbudowaliśmy obraz a potem zmieniliśmy jedno z poleceń / dodaliśmy nowe, to przebudowane zostaną tylko warstwy od zmienionej w dół (osczędność czasu i zasobów)" + " - Polecenia dockera są pisane WIELKIMI LITERAMI.\n", + " - Wywołanie każdego polecenia tworzy nową warstwę (*layer*).\n", + " - Jeśli zbudowaliśmy obraz, a potem zmieniliśmy jedno z poleceń lub dodaliśmy nowe, to przebudowane zostaną tylko warstwy od zmienionej w dół (oszczędność czasu i zasobów)." ] }, { @@ -250,7 +238,7 @@ "source": [ "### Przykładowy Dockerfile:\n", "```Dockerfile\n", - "# Nasz obraz będzie dzidziczył z obrazu Ubuntu w wersji latest\n", + "# Nasz obraz będzie dziedziczył z obrazu Ubuntu w wersji latest\n", "FROM ubuntu:latest\n", "\n", "# Instalujemy niezbędne zależności. Zwróć uwagę na flagę \"-y\" (assume yes)\n",