Lab 4
This commit is contained in:
parent
12bc89369a
commit
dbd04404f1
@ -8,14 +8,8 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"source": [
|
"source": [
|
||||||
"![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n",
|
|
||||||
"<div class=\"alert alert-block alert-info\">\n",
|
|
||||||
"<h1> Inżynieria uczenia maszynowego </h1>\n",
|
"<h1> Inżynieria uczenia maszynowego </h1>\n",
|
||||||
"<h2> 4. <i>Konteneryzacja</i> [laboratoria]</h2> \n",
|
"<h2> 4. <i>Konteneryzacja</i> [laboratoria]</h2> "
|
||||||
"<h3> Tomasz Ziętkiewicz (2022)</h3>\n",
|
|
||||||
"</div>\n",
|
|
||||||
"\n",
|
|
||||||
"![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)"
|
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -43,15 +37,11 @@
|
|||||||
"## 1. Konteneryzacja\n",
|
"## 1. Konteneryzacja\n",
|
||||||
"- Konteneryzacja to metoda tworzenia lekkich, odizolowanych środowisk uruchomieniowych\n",
|
"- Konteneryzacja to metoda tworzenia lekkich, odizolowanych środowisk uruchomieniowych\n",
|
||||||
"- Różnica między konteneryzacją a maszynami wirtualnymi:\n",
|
"- Różnica między konteneryzacją a maszynami wirtualnymi:\n",
|
||||||
" - Wirtualizacja na poziomie systemu operacyjnego a nie sprzętu\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 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",
|
" - 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",
|
" - Dzięki dostępnym narzędziom i infrastrukturze kontenery są łatwiejsze w utrzymywaniu i bardziej przenośne\n",
|
||||||
"- Ułatwiają:\n",
|
"- Kontenery ułatwiają rozwój, uruchamianie i dostarczanie aplikacji."
|
||||||
" - rozwój,\n",
|
|
||||||
" - uruchamianie\n",
|
|
||||||
" - i dostarczanie\n",
|
|
||||||
"aplikacji."
|
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -80,10 +70,9 @@
|
|||||||
"source": [
|
"source": [
|
||||||
"## 1.1 Docker\n",
|
"## 1.1 Docker\n",
|
||||||
"- Najpopularniejszy obecnie system konteneryzacji\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",
|
"- 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",
|
"- 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",
|
"- Dokumentacja: https://docs.docker.com/get-started/\n",
|
||||||
"</br><img style=\"height: 50px;\" src=\"img/environments/docker.png\"/>"
|
"</br><img style=\"height: 50px;\" src=\"img/environments/docker.png\"/>"
|
||||||
]
|
]
|
||||||
@ -113,10 +102,10 @@
|
|||||||
},
|
},
|
||||||
"source": [
|
"source": [
|
||||||
"## 1.2 Jak zacząć?\n",
|
"## 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",
|
" - Lokalnie: [instalacja](https://docs.docker.com/engine/install/)\n",
|
||||||
" - Możliwa zarówno pod Linux, Windows i MacOS.\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 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``` - uruchamia istniejący obraz tworząc kontener. Przykładowe wywołania:\n",
|
||||||
" - ```docker run -i -t ubuntu```<br>\n",
|
" - ```docker run -i -t ubuntu```<br>\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",
|
"\n",
|
||||||
" - ```docker run -p 8080:8080 jenkins/jenkins:lts```<br>\n",
|
" - ```docker run -p 8080:8080 jenkins/jenkins:lts```<br>\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",
|
" 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 start CONTAINER_ID``` - uruchamia ponownie kontener\n",
|
||||||
"- ```docker system df``` - pokazuje miejsce zajęte przez obrazy, kontenery i woluminy\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 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 `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",
|
" - Poprzez port zmapowany przez flagę `-p` (np. REST API albo interfejs w przegląrce)\n",
|
||||||
" - Przez system plików: \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/"
|
" - volumes: https://docs.docker.com/storage/volumes/"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@ -194,7 +183,7 @@
|
|||||||
},
|
},
|
||||||
"source": [
|
"source": [
|
||||||
"# Zadanie 1 [na zajęciach]\n",
|
"# 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",
|
"2. Uruchom obraz `ubuntu` w trybie interaktywnym z terminalem (`docker run -ti ubuntu`)\n",
|
||||||
"\n",
|
"\n",
|
||||||
"Poniższe punkty wywołujemy wewnątrz kontenera (w otwartym właśnie terminalu):\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 jest bieżący katalog? (polecenie `pwd`)\n",
|
||||||
"5. Jaki procesor jest widoczny w środku kontenera? Czy jest to procesor Twojej maszyny? (`lscpu`)\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",
|
"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",
|
"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",
|
"9. Zainstaluj w kontenerze jedno z brakujących narzędzi, np: `apt update; apt install htop`\n",
|
||||||
"10. Uruchom następujące polecenie: <br>\n",
|
"10. Uruchom następujące polecenie: <br>\n",
|
||||||
@ -233,11 +222,10 @@
|
|||||||
"## 1.4 Dockerfile\n",
|
"## 1.4 Dockerfile\n",
|
||||||
"\n",
|
"\n",
|
||||||
" - Dokumentacja: https://docs.docker.com/engine/reference/builder/\n",
|
" - Dokumentacja: https://docs.docker.com/engine/reference/builder/\n",
|
||||||
"\n",
|
|
||||||
" - Dockerfile składa się z serii poleceń.\n",
|
" - Dockerfile składa się z serii poleceń.\n",
|
||||||
" - Polecenia dockera są pisane WIELKIMI LITERAMI\n",
|
" - Polecenia dockera są pisane WIELKIMI LITERAMI.\n",
|
||||||
" - Wywołanie każdego polecenia tworzy nową warstwę (*layer*)\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)"
|
" - 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": [
|
"source": [
|
||||||
"### Przykładowy Dockerfile:\n",
|
"### Przykładowy Dockerfile:\n",
|
||||||
"```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",
|
"FROM ubuntu:latest\n",
|
||||||
"\n",
|
"\n",
|
||||||
"# Instalujemy niezbędne zależności. Zwróć uwagę na flagę \"-y\" (assume yes)\n",
|
"# Instalujemy niezbędne zależności. Zwróć uwagę na flagę \"-y\" (assume yes)\n",
|
||||||
|
Loading…
Reference in New Issue
Block a user