Posts

Showing posts with the label docker

LibreChat — alternativa Open WebUI za lokalne modele

U tekstu o Open WebUI postavljen je veb sloj iznad Ollame. Radi dobro i za većinu postavki je i dalje prvi izbor — ali nije jedini, i za pojedine firme nije ni najsrećniji. LibreChat je najozbiljnija alternativa. Ovaj tekst objašnjava po čemu se razlikuje, kada ima smisla preći i kako se postavlja uz lokalni model. Pitanje licence, bez zabluda Prvo da se raščisti jedna stvar koja se pogrešno prepričava. Open WebUI je besplatan i za velike firme. Nema plaćanja po korisniku, nema pretplate, nema ograničenja broja naloga. Od verzije 0.6.6 postoji jedna klauzula: u postavkama sa preko pedeset korisnika u tridesetodnevnom periodu ne smeš da ukloniš ili zameniš njihovo brendiranje — ime, logo, vizuelne oznake. Ispod tog praga i to slobodno menjaš. Praktično, to znači sledeće: Situacija Open WebUI Interna upotreba, bilo koliko korisnika Besplatno Do 50 korisnika, uz svoj logo Besplatno Preko 50 korisnika, uz svoj logo ...

Open WebUI — web interfejs za tvoje lokalne modele

Model koji radi u terminalu je dokaz da postavka valja. Model koji koriste ljudi u firmi mora da izgleda kao nešto što svi već znaju da koriste — sa nalozima, istorijom razgovora i mogućnošću da se priloži fajl. Open WebUI je upravo to: veb sloj iznad tvoje Ollame ili vLLM-a. Ovim tekstom se zatvara Faza 3, jer je postavka od ovog trenutka upotrebljiva i za nekog ko nikad neće otvoriti terminal. Šta dobijaš Razgovor u pregledaču, sa istorijom koja se čuva Korisničke naloge i prava pristupa po modelu Prilaganje dokumenata i pitanja nad njihovim sadržajem Sopstvene sistemske promptove sačuvane kao modeli Rad sa više servisa odjednom — lokalni model i spoljni API na istom mestu Ono što ne dobijaš je bilo kakvo ubrzanje. Interfejs samo prosleđuje zahteve; brzina i dalje zavisi od toga šta je ispod, kako je opisano u tekstu o proceni VRAM-a . Ovo je dodatni servis sa sopstvenom bazom i nalozima. Znači i sopstvenu površinu za napad, i sopstvene rezervne kopije. Ako...

Ollama u Dockeru sa GPU passthrough-om

Kontejner rešava dva problema koja se javljaju čim server prestane da bude samo tvoj: verzija alata više ne zavisi od distribucije, a ceo servis se seli na drugu mašinu jednom komandom. Cena je jedan dodatni sloj koji mora da propusti karticu. Taj sloj se zove nvidia-container-toolkit i on je sve o čemu ovaj tekst zapravo govori. Bez njega kontejner vidi procesor i ništa više. Kada u kontejner Za Protiv Verzija alata nezavisna od distribucije Još jedan sloj koji može da zakaže Ista postavka na svakoj mašini Slika sa CUDA bibliotekama ide preko gigabajta Više servisa jedan pored drugog, bez sukoba Drajver i dalje mora biti na domaćinu Vraćanje na staru verziju je trivijalno Modeli se lako izgube ako volumen nije podešen Prirodan korak ka Kubernetesu Nešto komplikovaniji nadzor Ako imaš jedan server i jedan model, systemd jedinica iz prethodnog teksta je jednostavnija i sasvim dovol...

docker compose — više kontejnera odjednom

Aplikacija retko radi sama. Uz nju ide baza, možda Redis, možda reverse proxy. Sa docker run to znači tri duge komande, ručno pravljenje mreže i pamćenje redosleda pokretanja. Compose sve to opisuje u jednom fajlu. Jedna komanda diže ceo sklop, jedna ga ruši. docker-compose ili docker compose Stariji alat je bio zaseban program pisan u Pythonu i zvao se docker-compose , sa crticom. Danas je Compose ugrađen u Docker kao poddomanda — docker compose , sa razmakom. $ docker compose version Docker Compose version v2.29.1 Ako ti to ne radi, instaliraj dodatak: # dnf install -y docker-compose-plugin Fajl se danas zove compose.yaml . Staro ime docker-compose.yml i dalje radi i videćeš ga svuda. Prvi compose fajl $ mkdir moj-sajt && cd moj-sajt $ vi compose.yaml services: web: image: nginx:1.25-alpine ports: - "8080:80" volumes: - ./html:/usr/share/nginx/html:ro $ mkdir html $ echo "<h1>Radi!</h1>" ...

Dockerfile i docker build — pravljenje sopstvenog image-a

Do sada si u Dockeru koristio tuđe image-e — povukao docker pull -om i pokrenuo docker run -om. Da bi spakovao svoju aplikaciju, treba ti sopstveni image. Dockerfile je tekstualni fajl sa uputstvom kako se image pravi. Komanda docker build to uputstvo izvršava i pravi image. Zašto ne docker commit Image se može napraviti i tako što uđeš u kontejner, ručno instaliraš šta ti treba i sačuvaš stanje sa docker commit . Radi — ali niko ne zna šta je unutra, ne može se ponoviti, i ne može se držati u Git-u. Dockerfile je recept: čitljiv, verzionisan i ponovljiv. Svako ko ga ima dobija identičan image. Prvi Dockerfile Napravi direktorijum i u njemu fajl imena Dockerfile — bez ekstenzije, sa velikim D: $ mkdir moja-app && cd moja-app $ vi Dockerfile FROM rockylinux:9 RUN dnf install -y httpd && dnf clean all COPY index.html /var/www/html/ EXPOSE 80 CMD ["httpd", "-D", "FOREGROUND"] Napravi i index.html : <h1>Radi...

docker logout

 Docker komanda docker logout se koristi za odjavljivanje sa Docker Hub-a ili drugog Docker registra. Kada se korisnik prijavi (login) koristeći docker login , Docker čuva autentikacione podatke na sistemu kako bi omogućio pristup privatnim Docker image-ovima i drugim resursima koji zahtevaju autentikaciju. Komanda docker logout briše te autentikacione podatke i odjavljuje korisnika sa Docker Hub-a ili drugog registra. Osnovna upotreba: docker logout Ova komanda odjavljuje trenutnog korisnika sa Docker Hub-a ili drugog registra. Primer: docker logout Ovaj primer odjavljuje trenutnog korisnika sa Docker Hub-a. Ovo je korisno kada želite prekinuti sesiju sa Docker registrom ili ako želite promeniti korisničke informacije ili pristup drugim registrima. Nakon izvršenja docker logout , bilo koji pokušaj pristupa privatnim image-ovima na Docker Hub-u ili drugom registru zahtevaće ponovnu autentikaciju korisnika kroz docker login .

docker volume

 Docker komanda docker volume koristi se za upravljanje Docker volumenima. Volumeni su posebni Docker objekti koji omogućavaju trajno skladištenje podataka između kontejnera i host sistema. Evo nekoliko osnovnih komandi i primera: Prikazivanje svih Docker volumena: docker volume ls Ova komanda prikazuje listu svih trenutno dostupnih Docker volumena. Kreiranje novog Docker volumena: docker volume create ime_volumena Ova komanda kreira novi Docker volumen sa određenim imenom. Primer: docker volume create moj_volume Ovaj primer kreira novi Docker volumen sa imenom "moj_volume". Prikazivanje detalja o Docker volumenu: docker volume inspect ime_volumena Ova komanda prikazuje detalje o određenom Docker volumenu, uključujući i putanju na host sistemu gde je volumen smešten. Primer: docker volume inspect moj_volume Ovaj primer prikazuje detalje o Docker volumenu sa imenom "moj_volume". Brisanje Docker volumena: docker volume rm ime_volumena Ova ko...

docker logs

 Docker komanda docker logs koristi se za pregledavanje izlaznih logova (logs) kontejnera. Ova komanda omogućava praćenje i dijagnostikovanje izlaza i logova koji se generišu unutar Docker kontejnera. Osnovna upotreba: docker logs ime_kontejnera Ova komanda prikazuje izlazne logove za određeni Docker kontejner. Možete koristiti ili ime kontejnera ili njegov ID. Primer: docker logs moj_kontejner Ovaj primer prikazuje izlazne logove za kontejner sa imenom "moj_kontejner". Prikazivanje poslednjih N linija logova: docker logs -- tail N ime_kontejnera Ova komanda prikazuje poslednjih N linija izlaznih logova za određeni kontejner. Primer: docker logs -- tail 10 moj_kontejner Ovaj primer prikazuje poslednjih 10 linija izlaznih logova za kontejner "moj_kontejner". Praćenje uživo (live) logova: docker logs -f ime_kontejnera Ova komanda omogućava praćenje uživo izlaznih logova za određeni kontejner. Logovi će se automatski ažurirati kako se pojavljuju ...

docker cp

 Docker komanda docker cp se koristi za kopiranje datoteka između lokalnog sistema i unutar Docker kontejnera. Ova komanda je korisna kada želite preneti podatke između host sistema i kontejnera ili između dva kontejnera. Važno je napomenuti da docker cp radi samo sa montiranim (mounted) volumenima i nije predviđena za kopiranje između lokalnog sistema i sistemskog fajl sistema kontejnera. Kopiranje sa lokalnog sistema u kontejner: docker cp lokalna_datoteka.txt ime_kontejnera:/putanja/unutar/kontejnera/ Ova komanda kopira datoteku "lokalna_datoteka.txt" sa lokalnog sistema u određeni kontejner na putanju "/putanja/unutar/kontejnera/". Primer: docker cp my_file.txt moj_kontejner:/app/ Ovaj primer kopira datoteku "my_file.txt" iz trenutnog radnog direktorijuma host sistema u kontejner "moj_kontejner" u direktorijum "/app/". Kopiranje iz kontejnera na lokalni sistem: docker cp ime_kontejnera:/putanja/unutar/kontejnera/ loka...

docker rmi

 Docker komanda docker rmi se koristi za brisanje (uklanjanje) Docker image-a sa lokalnog sistema. Ova komanda vam omogućava da oslobodite prostor na disku i uklonite image-ove koje više ne koristite. Osnovna upotreba: docker rmi <ime_ili_ID_image-a> Ova komanda briše određeni Docker image. Možete koristiti ili ime image-a ili njegov ID. Primer: docker rmi moj-novi-image Ovaj primer briše Docker image sa imenom "moj-novi-image". Brisanje više image-ova odjednom: docker rmi ime_image-a1 ime_image-a2 Ova komanda briše više Docker image-ova odjednom. Brisanje više image-ova koristeći filter: docker rmi $(docker images -q) Ovaj primer koristi docker images -q da dobije listu ID-jeva svih image-ova, a zatim ih koristi sa docker rmi kako bi obrisao sve image-ove. Brisanje image-ova sa oznakom (tag): docker rmi ime_image-a:oznaka Ova komanda briše specifičnu verziju image-a sa određenom oznakom. Brisanje svih nekorišćenih (dangling) image-ova: docker i...

docker network

 Docker komanda docker network se koristi za upravljanje Docker mrežama. Ova komanda vam omogućava kreiranje, pregled i konfigurisanje mrežnih resursa unutar Docker okruženja. Prikazivanje svih mreža: docker network ls Ova komanda prikazuje listu svih dostupnih Docker mreža. Kreiranje nove mreže: docker network create ime_mreze Ova komanda kreira novu Docker mrežu sa zadatim imenom. Pregled mrežnih detalja: docker network inspect ime_mreze Ova komanda prikazuje detalje o odabranoj Docker mreži, uključujući informacije o kontejnerima povezanim sa tom mrežom. Povezivanje kontejnera sa mrežom: docker network connect ime_mreze ime_kontejnera Ova komanda povezuje određeni Docker kontejner sa odabranom mrežom. Isključivanje kontejnera iz mreže: docker network disconnect ime_mreze ime_kontejnera Ova komanda isključuje određeni Docker kontejner iz odabrane mreže. Kreiranje mreže sa specifičnim driver-om: docker network create --driver bridge ime_mreze Ova komanda ...

docker push

 Docker komanda docker push se koristi za otpremanje (upload) lokalnih Docker image-ova na Docker Hub ili drugi Docker registar. Ova komanda omogućava deljenje vaših kreiranih Docker image-ova sa zajednicom ili sa drugim korisnicima. Osnovna upotreba: docker push <ime_image-a> Ova komanda otprema lokalni Docker image na Docker Hub ili drugi registrovani registar. Ime image-a mora sadržavati i punu putanju do registra ako se ne koristi Docker Hub. Primer: docker push moj-novi-image Ovaj primer otprema lokalni Docker image sa imenom "moj-novi-image" na Docker Hub, pretpostavljajući da ste već autentifikovani koristeći docker login . Otpremanje sa oznakom (tag): Ako koristite oznake (tags) za verzioniranje vaših image-ova, trebali biste ih uključiti u ime image-a koje otpremanje. docker push moj-novi-image:v2 Ovaj primer otprema image sa oznakom "v2" na Docker Hub. Otpremanje na drugi Docker registar: Ako želite otpremiti image na drugi Docker reg...

docker commit

 Docker komanda docker commit se koristi za kreiranje novog Docker image-a na osnovu trenutnog stanja kontejnera. Ova komanda omogućava stvaranje image-a sa svim izmenama i dodacima koji su napravljeni unutar kontejnera, što može biti korisno kada želite sačuvati promene koje ste napravili unutar kontejnera. Osnovna upotreba: docker commit <ime_kontejnera> <ime_novog_image-a> Ova komanda će kreirati novi Docker image na osnovu trenutnog stanja kontejnera. Možete koristiti ili ime ili ID kontejnera. Primer: docker commit moj_kontejner moj-novi-image Ovaj primer kreira novi Docker image sa imenom "moj-novi-image" na osnovu trenutnog stanja kontejnera "moj_kontejner". Dodavanje dodatnih opcija: Možete dodati dodatne opcije za prilagođavanje procesa kreiranja novog image-a, kao što su oznake (tags) i komentari. docker commit -m "Dodati novi softver" -a "Ime Autora" moj_kontejner moj-novi-image:v2 Ovaj primer kreira novi Do...

docker login

 Docker komanda docker login se koristi za autentikaciju na Docker Hub ili drugi Docker registar kako biste mogli pristupiti privatnim Docker image-ovima i izvršavati druge operacije koje zahtevaju autentikaciju. Evo osnovne upotrebe i nekoliko primera: Osnovna upotreba: docker login Ova komanda će vas pitati za korisničko ime (username), lozinku (password) i, opciono, e-mail adresu za registrovanje na Docker Hub. Nakon što unesete odgovarajuće informacije, bićete autentifikovani i moći ćete pristupiti privatnim Docker image-ovima na Docker Hub-u. Primer: docker login Nakon izvršenja ove komande, bićete upitani da unesete svoje korisničko ime, lozinku i, opciono, e-mail adresu. Specifikacija registra: Ako želite se povezati sa Docker registrom drugačijim od Docker Hub-a, možete navesti URL registra kao argument. docker login myregistry.com Odjavljivanje (logout): Kada završite sa radom na Docker Hub-u ili drugom Docker registru, možete se odjaviti koristeći komandu ...

docker exec

 Docker komanda docker exec se koristi za izvršavanje komandi unutar postojećeg Docker kontejnera. Ova komanda vam omogućava interaktivno ili neinteraktivno komuniciranje sa procesima koji se izvršavaju unutar kontejnera. Evo osnovne upotrebe i nekoliko primera: Osnovna upotreba (interaktivni režim): docker exec -it <ime_ili_ID_kontejnera> <komanda> Ova komanda pokreće određenu komandu unutar kontejnera u interaktivnom režimu. Možete koristiti ili ime ili ID kontejnera. Primer (pokretanje interaktivnog bash terminala unutar kontejnera): docker exec -it moj_kontejner /bin/bash Ovaj primer otvara interaktivni bash terminal unutar kontejnera "moj_kontejner". Pokretanje jednostavne komande unutar kontejnera: docker exec moj_kontejner ls /app Ovaj primer izvršava komandu ls /app unutar kontejnera "moj_kontejner" i prikazuje sadržaj direktorijuma "/app" unutar tog kontejnera. Pokretanje neinteraktivnih komandi: Ako želite izvršiti...

docker kill

 Docker komanda docker kill se koristi za momentalno zaustavljanje (ubijanje) pokrenutog kontejnera. Ova komanda ne šalje signal za graciozno zaustavljanje (SIGTERM) kao docker stop , već koristi signal za prisilno zaustavljanje (SIGKILL). Upotreba ove komande rezultuje trenutnim prekidom rada kontejnera. Osnovna upotreba: docker kill <ime_ili_ID_kontejnera> Ova komanda šalje signal za ubijanje određenom kontejneru. Možete koristiti ili ime ili ID kontejnera. Primer: docker kill moj_kontejner Ovaj primer trenutno zaustavlja kontejner sa imenom "moj_kontejner". Više kontejnera odjednom: Ako želite momentalno zaustaviti više kontejnera odjednom, navedite njihova imena ili ID-jeve odvojene razmakom. docker kill kontejner1 kontejner2 Primer sa korišćenjem ID-a kontejnera: docker kill 123abc456def Ovaj primer momentalno zaustavlja kontejner sa ID-om "123abc456def". Korišćenje docker kill je drastična mera, jer momentalno prekida izvršavanje p...

docker restart

 Docker komanda docker restart se koristi za ponovno pokretanje zaustavljenog kontejnera. Ova komanda omogućava brzo ponovno pokretanje kontejnera bez potrebe za ponovnim pokretanjem Docker image-a. Osnovna upotreba: docker restart <ime_ili_ID_kontejnera> Ova komanda šalje signal za ponovno pokretanje određenom kontejneru. Možete koristiti ili ime ili ID kontejnera. Primer: docker restart moj_kontejner Ovaj primer ponovno pokreće kontejner sa imenom "moj_kontejner". Više kontejnera odjednom: Ako želite ponovno pokrenuti više kontejnera odjednom, navedite njihova imena ili ID-jeve odvojene razmakom. docker restart kontejner1 kontejner2 Primer sa koriscenjem ID-a kontejnera: docker restart 123abc456def Ovaj primer ponovno pokreće kontejner sa ID-om "123abc456def". Ponovno pokretanje kontejnera često se koristi kada je potrebno primeniti izmene u konfiguraciji ili kada je došlo do nekog problema u radu kontejnera, a želite ga brzo i jednostavno ...

docker stop

 Docker komanda docker stop koristi se za zaustavljanje pokrenutih Docker kontejnera. Ova komanda omogućava kontrolisano zaustavljanje kontejnera, što znači da se proces unutar kontejnera obavija i kontejner zatim prestaje sa radom. Osnovna upotreba: docker stop <ime_ili_ID_kontejnera> Ova komanda šalje signal za zaustavljanje određenom kontejneru. Možete koristiti ili ime ili ID kontejnera. Primer: docker stop moj_kontejner Ovaj primer zaustavlja kontejner sa imenom "moj_kontejner". Više kontejnera odjednom: Ako želite zaustaviti više kontejnera odjednom, navedite njihova imena ili ID-jeve odvojene razmakom. docker stop kontejner1 kontejner2 Čekanje određenog vremena pre nego što se kontejner zaustavi: docker stop -t 30 moj_kontejner Ovaj primer šalje signal za zaustavljanje kontejneru "moj_kontejner", ali čeka maksimalno 30 sekundi da se proces unutar kontejnera završi pre nego što se kontejner zaustavi. Ako se proces ne završi u tom vremens...