Institute of Computer Science
  1. Courses
  2. 2023/24 fall
  3. Operating Systems (LTAT.06.001)
ET
Log in

Operating Systems 2023/24 fall

  • Pealeht
  • Loengud
  • Praktikumid
  • Viited

Praktikum 15 - Docker konteinerid

Enne tänase praktikumi juurde asumist lahendage kindlasti ära Praktikum 14.

Olete kunagi kuulnud kedagi ütlemas, see töötas minu arvutis. Olete te kunagi näinud tüütult palju vaeva, et saada enda arvutis käima arenduskeskkond mingile projektile. Olete kunagi teinud serveris mingeid muudatusi nii, et nendest muudatustest enam tagasi liikuda ei saa. Tänase praktikumi eesmärk on need probleemid elimineerida või vähemalt selliste probleemide hulka võimalikult palju vähendada.

Tänase praktikumi teema on Docker, Visual Studio Code, Visual Studio Code devcontainers, ja Azures Container Instances. Vastavaid teemasid käsitleti põhjalikult kursuse loengutes, seega juhendis me teooriateemasid pigem ei kajasta ning vajadusel otsige ise internetist täiendavat materjali ja seletusi kui midagi jääb endiselt segaseks (loomulikult võite küsida ka aine õppejõududelt, kui nad oskavad vastata).

Azure pilvemasina suuruse muutmine

Tänases praktikumis vajame täiendavaid ressursse Azure pilvemasinalt. Nagu virtualiseerimise loengus mainiti, on üheks virtuaalmasinate (eriti pilvemasinate) eripäraks võimalus neile ajutiselt anda täiendavaid ressursse. Selleks külastage Azure pilve Portaali kodu https://portal.azure.com ja muutke Azure pilvemasina perenimi-vm riistvara profiili D2s_v3 asemel D4s_v3-ks. See võimaldab meil mitmeid tänase praktikumi tegevusi eeldatavasti kiiremini sooritada ning vähendab võimalikke tekkivaid erroreid.

Järgnevalt lülitage enda Azure pilvemasin sisse Start ja ühendage ennast RDP abil Azure Windows 11 pilvemasinaga. Valdav enamik tänasest praktikumist toimub jällegi Azure pilvemasinas.

Installime Visual Studio Code

Järgnevalt paigaldame Visual Studio Code, mida kasutame tarkvaraarenduse näidiskeskkonnana.

  1. Minge leheküljele https://code.visualstudio.com/ ja laadige sealt alla Visual Studio Code Windows 11 System Installer x64 süsteemi jaoks.
  2. Paigaldage Visual Sudio Code Azure pilvemasinasse. (Oodake kuni paigaldus on lõpule jõudnud enne järgmise sammu tegemist).
  3. Paigaldage Azure pilvemasinasse Visual Studio Code Remote Development Extension Pack. Seda saate teha Visual Studio Code Extensions alamlehelt või lingilt https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.vscode-remote-extensionpack
  4. Pärast edukat paigaldust sulgege Visual Studio Code ja kõik WSL aknad.
  5. Avage WSL ja kloonige endale WSLis kodukausta repo https://github.com/AndresNamm/dockertest.git
  6. Mine kloonitud Githubi kausta cd dockertest
  7. Sisestage code . Peaksite saame veateate ERROR: Failed to download the VS Code server. 'wget' not installed.
  8. Paigaldage WSLi soovitatud puuduolev moodul sudo apt-get install wget
  9. Proovige uuesti code . . Peaks avanema Visual Studio Code must aken. Vajutage DOCKERTEST [WSL:DEBIAN] ja nõustuge hoiatusega YES, I trust the authors
  10. Avage fail README.md ja kirjutage sinna kolmandale reale enda nimi. Salvestage README.md
  11. Sulgege Visual Studio Code
  12. Kontrollige WSLi käsureal dockertest repositooriumi kaustas, et fail README.md sisaldab teie nime.

Docker konteinerite loomine ja käivitamine

  1. Paigaldage Docker järgmise juhendi järgi: https://docs.docker.com/desktop/install/windows-install/
    • Valige Use WSL 2 backend instead of Hyper-V
    • Paigaldus võtab 5-15 minutit aega. Varuge kannatust.
    • Kuni ootate soovitame lugeda dockeri kohta lähemalt siit: https://www.guru99.com/docker-tutorial.html
    • Pärast paigaldust tehke Azure virtuaalmasinale taaskäivitus.
  2. Käivitage Docker Desktop Windowsi stardimenüüst-> Nõustuge tingimustega.

Testime Dockerit

  • Avage nüüd uuesti WSLi aken
  • Sisestage käsk
 docker ps
 docker images 
  • PS, kui saate Got Permission Denied while trying to connect to the docker daemon... , siis sulgege oma Ubuntu/WSL terminal ja avage see uuesti. Vajadusel tehke kogu arvutile restart.
  • Nüüd sisestage käsk

docker run -d -p 80:80 docker/getting-started

  • Kontrollige jooksvaid dockeri konteinereid käsuga docker ps
  • Kontrollige oma alla laetud dockeri image'id docker images
  • Edasi minge aadressile http://localhost/tutorial/ - seal asub teie käivitatud Docker image
  • Järgige nüüd sealt avanenud juhendit (tutorialit) ning tehke läbi osad Getting Started,Our Application, Updating our App, Sharing our app, "Persisting our DB"
    • Järgnevalt paneme iga alamosa kohta ka mõned õppejõu vihjed ja soovitused kuidas Dockeri juhendit / harjutusi täita.
    • Our application: peate esmalt alla laadima app.zip faili. Seda on soovitatav teha Azure Windows 11 veebilehitsejast, kust juhendit näete. Edasi on vaja see app.zip fail saada WSLi. Selleks on mitmeid variante kuid õppejõud soovitavad kasutada WSLi kodukasutas käsku cp /mnt/c/Users/perenimi-admin/Downloads/app.zip .
    • Nüüd on vaja ZIP fail lahti pakkida, liikuda lahti pakitud failide kasuta ja seal Visual studio code käivitada
      sudo apt install unzip
      unzip app.zip
      cd app/
      code .
    • Muutke avanenud Visual Studio code aknas app [WSL:DEBIAN] -> src -> static -> index.html failis title rida nii et see sisaldaks teie perenime.
    • Edasi järgige Our application juhendit kuni lõpuni, mis võiks olla piisava detailsusega.
    • Updating our App muutke nii, et muudetav rida sisaldaks kuvatava teksti alguses teie eesnimele.
  • Ülesanne 1: Esitage ekraanivaade Dockeri näidis ToDo rakendusest, kus veebilehe pealkiri sisaldab teie perenime ja hoiatusteadet, et pole ühtegi ToDo kirjet teie eesnime
  • Edasi vaatame Sharing our app.
    • Looge endale Docker Hub kasutaja või kasutage olemasolevat.
    • Järgige juhendit enda nimelise custom dockeri konteineri ülesaadimiseks.
    • Play with Docker keskkonnas saad enda värskelt loodud public konteinerit katsetada.
  • Tehke läbi ka Persisting our DB.
  • Ülesanne 2: Tehke ekraanivaade Persisting our DB viimase harjutuse docker volume inspect todo-db WSLi käsureal nii, et teie nimi oleks käsureal nähtav.

Azure Container Instances

  • Mäletatavasti tegite endale eelmises praktikumis Azure konto. Tänases praktikumis kasutame seda jälle.
  • Selgitage välja oma Ülikooli Subscription ID selle juhendi järgi https://learn.microsoft.com/en-us/azure/azure-portal/get-subscription-tenant-id
  • Eelnevalt tuleb teil endal resource group luua. Kasutame selleks azure cli-d (Command Line Interface). Selleks, et seda kasutada, tuleb ta WSLi installida selle juhendi järgi. https://learn.microsoft.com/en-us/cli/azure/install-azure-cli-linux?source=recommendations&pivots=apt
    • curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash käsk ei tee esmapilgul midagi, sest kui proovime käsku curl -sL https://aka.ms/InstallAzureCLIDeb saame veateate, et curl on puudu. Paigaldame selle käsuga sudo apt install curl ja proovime Azure CLI paigalduse käsku uuesti.
  • Kui olete endal Azure CLI installinud, siis kõigepealt logige oma ülikooli kontoga enda Azure-sse sisse. Avaneb prompt, kus teil tuleb oma Azure kontoga sisse logida.

az login

  • Valige endale active Azure Subscription mille te enne üles otsisite.
AZURE_SUBSCRIPTION="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
az account set --subscription $AZURE_SUBSCRIPTION
  • Pärast sisselogimist saate endal luua uue resource groupi.

az group create --location norwayeast --name <perenimi>-ci

  • Logi dockeriga Azure sisse

docker login azure

  • Peate käsitsi minema viidatud aadressile Azure Windows 11 veebilehitsejas ja sisestama autentimise koodi. Logige seal oma Azure kontoga sisse.
    • Hetkel ignoreerime hoiatust, et docker compose integratsioon ECS-i ja ACI-ga lõpetab töö pärast novembrit 2023.
  • Nüüd saate endal Dockeri konteksti luua.
RESOURCE_GROUP=<perenimi>-ci
docker context create aci --subscription-id $AZURE_SUBSCRIPTION --resource-group $RESOURCE_GROUP --location norwayeast <perenimi>-aci
  • Jooksuta nüüd test dockeri imaget Azure pilves
docker context use <perenimi>-aci
docker run -p 3000:3000 registry.hub.docker.com/alop372/getting-started
  • See samm võtab nüüd aega. Ärge seda praegu pooleli jätke ega katkestage.
    • Sisestage docker ps mis aadressi näete PORTS tulbas?
    • Külastage eelpool viidatud aadressi ja leidke õppejõu dockeri konteineri versioon sealt.
  • Peatage ja kustutage eelnev proovikonteiner.
docker stop <CONATINER ID>
docker rm <CONATINER ID>
  • Korrage nüüd docker run -d -p 3000:3000 registry.hub.docker.com/.../getting-started käsku uuesti, kus ... asemel on teie praktikumi varasemas punktis Sharing our app loodud teie nime sisaldav ToDo rakendus.

Ülesanne 3: Esitage ekraanivaade, kus Azure pilves jookseb teie harjutuse ToDo konteiner rakendus, mis sisaldab teie nime.

  • Proovige dockeri konteiner üles leida ka Azure veebiportaalist.
    • Vihje: otsige perenimi-ci nimelise resource group alt.
  • Nüüd uuesti WSL käsureal sisestage
docker stop <CONATINER ID>
docker rm <CONATINER ID>
  • Kontrollige nüüd Azure veebiportaalist, kas Dockeri konteiner on seal ikka alles või on sealt eemaldatud?
  • Vahetage nüüd dockeri kontekst tagasi enda masina Dockeri konteksti peale peale.
docker context list
docker context use default

Pilvetehnoloogia kulude analüüs

Azure ja teised pilveteenused peavad väga täpset kasutuse ja kulude arvestust kasutatud ressurside üle. Leidke Azure keskkonnast üles, kui palju raha (EUR, USD) millisele ressursile kulus praktikumide 14 ja 15 sooritamisel. IT professionaalil on vaja tihti hinnata hinnata pilvelahenduse kasutamise kulu võrreldes kohaliku lahendusega.

  • Ülesanne 4a: Esitage ekraanivaade (või mitu) Azure keskkonnast, kus on näha palju eurosid ja millistele alamressurssidele kulus Azure teenuste kasutamiseks praktikumide 14 ja 15 sooritamiseks.
  • Ülesanne 4b: Esitage arvutuskäik ja rahaline hinnang kui palju maksaks Windows 11 ja Ubuntu virtuaalmasinate hoiustamine ja jooksutamine Azure pilves 4 kuulise operatsioonisüsteemid kursuse raames? Teisisõnu, kui Virtualbox asemel oleksime kõik praktikumid sooritanud Azure või sarnasel pilveteenusel, siis kui palju oleks see ühe tudengi kohta maksma läinud?
    • Võite eeldada, et kasutame sarnaste riistvaraliste parameetritega virtuaalmasinaid nagu kasutasime operatsioonisüsteemid kursuse raames.

Ressurside vabastamine

  • Kui teil on praktikumid 14 ja 15 edukalt lahendatud, siis vabastage ka kõik ressursid.
  • Minge nüüd https://portal.azure.com. Otsige oma resource grupid üles ja eemaldage kõik loodud ressursid.
  • Valige kõik ressursid. Ning eemaldage need.
  • Vajutage mõlema resource groupi puhul Delete Resource Group.
  • Soovitatav on ka jaanuaris pärast aine eksamit Virtualbox virtuaalmasinad eemalda, et vabastaksite enda arvutis aine jaoks kasutusel olnud kohaliku andmemahu.
  • Aine õppejõud soovitavad kõigile operatsioonisüsteemid aine kuulajaile osaleda jätkukursusena kevadsemestril aines LTAT.06.002 Andmeturve, millel on erinev loengupida Tarmo Oja, kuid praktikume koostan ja ainet korraldan peamiselt mina Alo Peets.
    • Kui operatsioonisüteemid kursusel õppisime peamiselt kuidas arvutis X tegevusi teha, siis andmeturve keskendub erinevate IT süsteemide tegevuste Y turvalisele kasutuse õpetamisele ja küberturvalisuse nüansside tutvustamisele. Ehk jätkame sealt, kus operatsioonisüsteemid kursusega oskustega lõpetasime nii, et kindlasti aitab andmeturve kursus veelgi teie arvutikasutuse oskusi kinnistada ja parandada.
    • Hajussüsteemide õppetoolist soovitaksin bakalaureusele veel: LTAT.06.008 Pilvetehnoloogia kursust ja pärast andmeturve läbimist ka LTAT.06.003 Süsteemihaldus.

Esitada

  1. Ülesanne 1: Esitage ekraanivaade Dockeri näidis ToDo rakendusest, kus veebilehe pealkiri sisaldab teie perenime ja hoiatusteadet, et pole ühtegi ToDo kirjet teie eesnimele.
  2. Ülesanne 2: Tehke ekraanivaade Persisting our DB viimase harjutuse docker volume inspect todo-db WSLi käsureal nii et teie nimi oleks käsureal nähtav.
  3. Ülesanne 3: Esitage ekraanivaade kus, Azure pilves jookseb teie harjutuse ToDo konteiner rakendus, mis sisaldab teie nime.
  4. Ülesanne 4a: Esitage ekraanivaade (või mitu) Azure keskkonnast, kus on näha palju eurosid ja millistele alamressurssidele kulus Azure teenuste kasutamiseks praktikumide 14 ja 15 sooritamiseks.
  5. Ülesanne 4b: Esitage arvutuskäik ja rahaline hinnang kui palju maksaks Windows 11 ja Ubuntu virtuaalmasinate hoiustamine ja jooksutamine Azure pilves 4 kuulise operatsioonisüsteemid kursuse raames? Teisisõnu, kui Virtualbox asemel oleksime kõik praktikumid sooritanud Azure või sarnasel pilveteenusel, siis kui palju oleks see ühe tudengi kohta maksma läinud?

Kui teil on Github/Gitlab valmis, siis lisage link esitusele moodle keskkonda, kust me teie lahenduse leiame. Moodle esitamise otselink: https://moodle.ut.ee/mod/assign/view.php?id=1230396

(Tähtaeg 2 nädalat)

  • Institute of Computer Science
  • Faculty of Science and Technology
  • University of Tartu
In case of technical problems or questions write to:

Contact the course organizers with the organizational and course content questions.
The proprietary copyrights of educational materials belong to the University of Tartu. The use of educational materials is permitted for the purposes and under the conditions provided for in the copyright law for the free use of a work. When using educational materials, the user is obligated to give credit to the author of the educational materials.
The use of educational materials for other purposes is allowed only with the prior written consent of the University of Tartu.
Terms of use for the Courses environment