--- title: 'MMOS 2025/26: Vježba 08' tags: [MMOS_2526] author: Matija Burić --- ### Mrežni i mobilni operacijski sustavi 2025/26 # Docker: objava slika, cloud U ovoj vježbi koristimo Docker Hub za objavu slike te pokazujemo više načina kako privremeno ili trajno objaviti aplikaciju na Internetu (bez kreditne kartice gdje je moguće). --- ## 1. Docker Hub ### 1.1. Registracija i prijava - Ako nemate račun, kreirajte ga na https://hub.docker.com/ - Prijava iz CLI: ```bash $ docker login USING WEB-BASED LOGIN To sign in with credentials on the command line, use 'docker login -u <username>' Your one-time device confirmation code is: FRLW-TBHB Press ENTER to open your browser or submit your device code here: https://login.docker.com/activate Waiting for authentication in the browser… ``` Očekivani rezultat: `Login Succeeded`. ### 1.2. Minimalna web slika Kreirajte `index.html` i `Dockerfile` u praznom direktoriju. `index.html` ```html <!doctype html> <html><head><meta charset="utf-8"><title>moja 1. docker slika na Docker Hub</title></head> <body><h1>moja 1. docker slika na Docker Hub</h1><p>Docker Hub i cloud</p></body></html> ``` `Dockerfile` ```dockerfile FROM python:3.11-slim COPY index.html /site/index.html WORKDIR /site EXPOSE 8080 CMD ["python", "-m", "http.server", "8080", "--directory", "/site"] ``` Build i tag (koristite svoj Docker Hub korisnički račun): ```bash $ docker build -t [korisnicko_ime]/mmos-web:v1.0 . ``` ### 1.3. Push i provjera ```bash $ docker push [korisnicko_ime]/mmos-web:v1.0 ``` Provjerite na Docker Hubu da je repozitorij i tag vidljiv (public). :::info Format taga: `[korisnicko_ime]/[repo]:[tag]` (npr. `student123/mmos-web:v1.0`). ::: ## 2. Objavljivanje u cloudu ### 2.1. Cloudflare Quick Tunnels (bez računa i kartice) 1) Instalacija `cloudflared`: - Windows (Winget): `winget install --id Cloudflare.cloudflared` - macOS (Homebrew): `brew install cloudflared` - Linux: slijedite službene upute: https://developers.cloudflare.com/cloudflare-one/connections/connect-apps/install-and-setup/installation/ 2) Pokrenite lokalni kontejner: ```bash $ docker run -d --name mmos-web -p 8080:8080 [korisnicko_ime]/mmos-web:v1.0 ``` 3) Otvorite tunel: ```bash $ cloudflared tunnel --url http://localhost:8080 ``` 4) Kopirajte prikazani javni URL (npr. `https://*.trycloudflare.com`) i otvorite ga u pregledniku. Napomena: URL vrijedi dok je proces `cloudflared` aktivan. ### 2.2. GitHub Codespaces 1) Na stranici https://github.com/codespaces logirajte se u vaš GitHub repozitorij i odaberite “Blank”. 2) Počekajte dok se ne pokrene terminal 3) U terminalu povucite vašu sliku s Docker Hub-a i pokrenite kontejner: ```bash $ docker run -d -p 8080:8080 --name mmos-web [korisnicko_ime]/mmos-web:v1.0 ``` 4) Otvorite panel “Ports”, pronađite port 8080, postavite “Visibility: Public”, zatim kliknite na otvoreni URL. ### 2.3. Render 1) Registrirajte se na https://render.com (Google login podržan). 2) “New +” → “Web Service”. Odaberite jednu od opcija: - From Docker: “Existing Image” → Registry: Docker Hub → Image: `[korisnicko_ime]/mmos-web:v1.0` 3) Postavke servisa: - Name: po želji - Region: po želji - Instance type: **Free** 4) Kliknite “Deploy Web Service” i pričekajte deploy. Otvorite dodijeljeni URL (npr. `https://mmos-web-v1-0.onrender.com/`). ### 2.4. Zeabur 1) Registrirajte se na https://zeabur.com/ (Google login podržan). 2) Kreirajte projekt → “New Project”. 3) Odaberite Docker Image 4) Image: navedite `[korisnicko_ime]/mmos-web:v1.0` 5) ports: 8080 6) Odaberite "Networking" tab i "Generate Domain" pod Public segmentom. 7) dodajte ime koje vam odgovara i odaberite "Confirm" ---