Both sides previous revision
Poprzednia wersja
Nowa wersja
|
Poprzednia wersja
|
pl:dydaktyka:sitw:2016:docker:lab1 [2017/10/17 09:14] bstachura [Treść laboratorium] |
pl:dydaktyka:sitw:2016:docker:lab1 [2017/11/08 07:38] bstachura [Treść laboratorium] |
| |
Instalacja za pomocą mamangera pakietów: | Instalacja za pomocą mamangera pakietów: |
<code bash> | <code bash>apt-get install apt-transport-https ca-certificates curl iptables</code> |
apt install docker.io | następnie: |
</code> | <code bash>curl -sSL https://get.docker.com/ | sh</code> |
Włączanie usługi dockera wraz ze startem systemu: | Włączanie usługi dockera wraz ze startem systemu: |
<code bash> | <code bash> |
</code> | </code> |
Każda z linii nakłada na obraz kolejną warstwę abstrakcji, dobrą praktyką jest zaczynać od najniższego poziomu jako od systemu, gdyż w przypadku zmian, np ścieżki w zmiennej AP, budowa nowego obrazu rozpocznie się od zmienionej linii, wszystkie wcześniejsze zostaną pominięte, co zaoszczędzi czasu przy budowaniu.\\ | Każda z linii nakłada na obraz kolejną warstwę abstrakcji, dobrą praktyką jest zaczynać od najniższego poziomu jako od systemu, gdyż w przypadku zmian, np ścieżki w zmiennej AP, budowa nowego obrazu rozpocznie się od zmienionej linii, wszystkie wcześniejsze zostaną pominięte, co zaoszczędzi czasu przy budowaniu.\\ |
Poniżej wyjaśnię anatomię pliku *Dockerfile* na powyższym przykładzie.\\ | Poniżej wyjaśnię anatomię pliku **Dockerfile** na powyższym przykładzie.\\ |
| |
* **FROM node:0.10** - oznacza, że nasz obraz będzie budowany na podstawie obrazu node w wersji 0.10.X, by zablokować do konkretnej wersji trzeba ją uściślić, np.: node:0.10.33. | * **FROM node:0.10** - oznacza, że nasz obraz będzie budowany na podstawie obrazu node w wersji 0.10.X, by zablokować do konkretnej wersji trzeba ją uściślić, np.: node:0.10.33. |
docker build -t example/docker-node-hello:latest . | docker build -t example/docker-node-hello:latest . |
</code> | </code> |
| ====Przykład==== |
| |
==== Treść laboratorium ==== | ==== Ćwiczenia do wykonania na localhost ==== |
| |
* //Zrób update systemu// | * //Zrób update systemu// |
<code bash>apt update && apt upgrade</code> | <code bash>apt update && apt upgrade</code> |
* //Zainstaluj docker-engine// | * //Zainstaluj docker-engine// |
| Obecnie |
| <code bash>apt-get install apt-transport-https ca-certificates curl iptables</code> |
| następnie: |
| <code bash>curl -sSL https://get.docker.com/ | sh</code> |
| Dawniej |
<code bash>apt install docker.io</code> | <code bash>apt install docker.io</code> |
* //Ustaw MTU na wartość 1454, aby tego dokonać należy dodać// | * //Ustaw MTU na wartość 1454, aby tego dokonać należy dodać// |
<code bash>systemctl start docker</code> | <code bash>systemctl start docker</code> |
* **Zweryfikuj instalację dockera przez uruchomienie kontenera hello-world** | * **Zweryfikuj instalację dockera przez uruchomienie kontenera hello-world** |
<code bash>docker run hello world</code> | <code bash>docker run hello_world</code> |
* //Zrestartuj hosta gospodarza// | * //Zrestartuj hosta gospodarza// |
* //Zweryfikuj status usługi docker przez uruchomienie kontenera hello-world jeszcze raz// | * //Zweryfikuj status usługi docker przez uruchomienie kontenera hello-world jeszcze raz// |
* //Zweryfikuj wartość MTU na interfejsie **docker0**// | * //Zweryfikuj wartość MTU na interfejsie **docker0**// |
<code bash>ip address show dev docker0</code> | <code bash>ip address show dev docker0</code> |
| |
| \\ |
| \\ |
| **Proszę odinstalować dockera na końcu laboratoriów** |
| |
| ==== Treść laboratorium ==== |
| \\ |
| \\ |
| **Dockerfile** proszę zakładać w katalogu domowym użytkownika **student** lub jego podkatalogach\\ |
| \\ |
| \\ |
| **Ćwiczenia proszę wykonywać dalej na localhost**\\ |
| \\ |
| === Ćwiczenie 1 === |
| |
| * Przygotuj **Dockerfile**, który zainstaluje httpd na oficjalnym obrazie Centos 6 |
| * Dodaj pole **maintainer** |
| * Zbuduj obraz z o nazwie **laborki** |
| * Uruchom kontener w trybie interaktywnym |
| <code bash>-ti </code> |
| * Uruchom konener w tle |
| <code bash>-d</code> |
| * Sprawdź czy kontener jest uruchomiony |
| <code bash>docker ps</code> |
| * Sprawdź czy w kontenerze **jest zainstalowany httpd** |
| * Sprawdź czy obraz ma około **261MB** |
| |
| === Ćwiczenie 2 === |
| |
| * Zmodyfikuj wcześniejszy **Dockerfile** tak, aby startował **httpd** (httpd ma być uruchomiony w **FOREGROUNDZIE, nie jako daemon!**) |
| * przebuduj obraz |
| * sprawdź czy kontener działa |
| * sprawdź czy httpd działa |
| |
| === Ćwiczenie 3 === |
| |
| * Przygotuj index.html z wiadomością powitalną |
| * Zmodyfikuj poprzedniego **Dockerfile** i dodaj plik index.html do obrazu w ścieżce: /var/www/html/index.html |
| * przebuduj obraz |
| * uruchom kontener z upublicznionym portem 80 |
| * odwiedź stronę powitalną |
| |
| === Ćwiczenie 4 === |
| |
| * załóż konto na **docker.io** |
| * zaloguj się do docker.io |
| <code bash>docker login</code> |
| * wyeksportuj |
| <code bash>docker push</code> |
| obraz (musi nazywać się jak użytkownik, czyli jeśli konto to **jkowalski**, to obraz powinien nazywać się: **jkowalski/nazwa_obrazu:tag**) - jeśli trzeba, przebuduj obraz do poprawnej nazwy |
| * Ściągnij obraz grupy po lewej |
| <code bash>docker run -d nazwa_uzytkownika/nazwa_obrazu</code> |
| * uruchom kontener z tego obrazu |
| * odwiedź stronę powitalną |
| === Ćwiczenie 5 === |
| |
| * Proszę stworzyć plik **dockerfile** opisujący maszynę partą o system Centos w wersji 7. System ten ma mieć dodanych 2 użytkowników systemowych **jan** oraz **kinga**, każdy z nich ma mieć ustawione hasło: **DockerLab** |
| * Użytkownicy dodane przez Państwa mają należeć do grup **users** oraz **sudo**. |
| * Proszę zainstalować sudo i zmodyfikować plik sudoers tak, aby sudo działało dla grupy sudo. |
| * Proszę zbudować i uruchomić obraz, zweryfikuj, że wszystko działa poprawnie oraz członkostwo użytkowników. |
| |
| === Ćwiczenie 6 === |
| |
| * Proszę uruchomić kontener dockera zawierający **bazę MySQL** w wersji 5.7 z nazwą: **mysql-container**, zostanie ona wykorzystana w późniejszych zadaniach. |
| |
| === Ćwiczenie 7 === |
| |
| * Proszę stworzyć i uruchomić kontener w którym zainstalują i uruchomią Państwo forum oparte o skrypt **flarum** (http://flarum.org/ zainstalowany za pomocą **composera**), jako bazę proszę wykorzystać kontener **mysql-container**. System dowolny. |
| * Proszę przekierować port 8080 na port 80 kontenera z flarum. |
| |
| === Ćwiczenie 8 === |
| |
| * Proszę uruchomić kontener z wordpressem (zmapować port 8081), jako bazę wykorzystać kontener **mysql-container** |