Přeskočit na obsah
U sebe doma 3 min čtení

Server llama.cpp umí nástroje oddělit do Dockeru, výchozí kontejner jim ale nechává síť

Nový parametr serveru llama.cpp posílá vestavěné nástroje agenta do nového nebo už běžícího kontejneru Docker. Bez něj nástroje dál běží přímo na hostitelském systému. Automaticky založený kontejner navíc dostane běžnou síť a nemá nastavené limity paměti ani procesoru.

Schéma služby rozdělené mezi několik kontejnerů Docker
Kontejner oddělí procesy a soubory, jeho síťová a procesní omezení se ale nastavují zvlášť. Ilustrace: Dereckson, Wikimedia Commons (CC0)

Server llama.cpp dostal 8. srpna do hlavní větve první podporu odděleného běhu nástrojů přes Docker. Agent tak může číst a zapisovat soubory nebo pouštět příkazy uvnitř kontejneru místo přímo v počítači, na kterém běží model. Funkce je označená jako experimentální.

Nová volba --tools-runtime přijímá dva způsoby spuštění. Zápis docker:<image> založí nový kontejner z vybraného obrazu a používá ho pro další volání. Varianta docker-container:<id> připojí server k už běžícímu kontejneru, který si správce připravil sám.

Bez této volby se chování nemění: nástroje běží na hostitelském systému. Dokumentace navíc dál varuje, že vestavěné nástroje se nemají zapínat v nedůvěryhodném prostředí. Samotné přesunutí do Dockeru totiž ještě neurčuje, kam smí příkaz po síti ani kolik prostředků může spotřebovat.

Server ovládá jeden kontejner přes docker exec

Zdrojový kód llama.cpp při volbě nového obrazu spustí docker run --rm -i, uloží si identifikátor kontejneru a uvnitř otevře shell. Každou další operaci předá přes docker exec. Při ukončení serveru zavře vstup kontejneru a Docker ho díky volbě --rm odstraní.

Oddělení se týká všech vestavěných operací nad soubory i příkazového nástroje. Kontejner má vlastní souborový systém a spouštěcí příkaz nepřipojuje žádný adresář hostitele. Když nástroj potřebuje zapsat obsah, server ho do kontejneru přenese přes docker cp. Zadaný obraz musí obsahovat prostředí POSIX a běžné příkazy jako sh, cat, find či timeout.

Jiná pravidla platí pro již existující kontejner. llama.cpp ho nevytváří ani při ukončení nezastavuje. Pokud zmizí, požadavek skončí chybou. U kontejneru založeného serverem naopak kód počítá s novým spuštěním, když předchozí instance nečekaně skončí.

Výchozí spuštění nezakáže síť ani spotřebu

Příkaz, který llama.cpp skládá, nepoužívá --network none. Docker proto kontejner připojí k běžné výchozí síti, ze které může navazovat odchozí spojení. Režim bez sítě je v Dockeru samostatná volba; ponechá uvnitř jen místní rozhraní loopback. Nová funkce llama.cpp ji sama nepřidává.

Stejné je to s prostředky. Dokumentace Dockeru uvádí, že kontejner bez omezení nemá výchozí strop pro paměť a může využívat procesor hostitele podle možností plánovače. Spouštěcí kód llama.cpp nepředává --memory ani --cpus. Chybí v něm také režim souborového systému pouze pro čtení, volba neprivilegovaného uživatele a odebrání schopností procesu.

To neznamená, že nový režim nic neoddělí. Příkaz agenta se nedostane přímo do souborového systému hostitele a neběží mezi jeho běžnými procesy. Pokud však získá citlivá data uvnitř kontejneru, výchozí síť mu sama o sobě nebrání poslat je ven. Neomezená spotřeba zase dovoluje chybnému příkazu zatížit paměť nebo procesor celého počítače.

Připravený kontejner dává správci víc kontroly

Pro přísnější provoz je podstatná druhá varianta, docker-container:<id>. Správce může kontejner založit předem bez sítě, s limity paměti a procesoru, souborovým systémem pouze pro čtení nebo s neprivilegovaným uživatelem. llama.cpp se pak jen připojí k jeho identifikátoru. Konkrétní kombinaci musí určit podle nástrojů, které chce agentovi povolit; například zápis souboru se s plně uzamčeným souborovým systémem neslučuje.

Rozhraní dovoluje vybrat už běžící kontejner také hlavičkou x-tool-runtime pro konkrétní požadavek. V této podobě zatím přijímá jen schéma docker-container:. Neznámý typ běhového prostředí skončí chybou, takže se požadavek tiše nepřepne zpět na hostitele.

Sloučený návrh změny sám používá slovo „initial“, tedy počáteční podpora. V diskusi padly i náměty na Podman nebo vzdálené spuštění přes SSH, do této změny se ale nedostaly. Současný automaticky založený kontejner je užší hranice než přímý běh na hostiteli, nikoli hotové bezpečné prostředí pro libovolný cizí příkaz.

Diskuse

Zatím tu nikdo nediskutuje. Můžete být první.

Napsat příspěvek

Diskutovat můžete i bez účtu. S registrací se ale příspěvek zveřejní hned a nemusíte pokaždé vyplňovat jméno. Účet už máte? Přihlaste se.

Nezveřejňujeme ho, slouží jen redakci.

Podporuje zápis Texy: **tučně**, *kurzíva*, odrážky, odkazy.

Dál k tématu

  1. U sebe doma

    Ollama v 0.32.6 odstranila generování obrázků a odkazuje na starší verzi

    Vydání Ollamy 0.32.6 ze 4. srpna 2026 smazalo ze zdrojového kódu celou část, která uměla generovat obrázky. Poznámky k vydání radí zůstat na verzi 0.32.5. Katalog modelů…

  2. U sebe doma

    llama.cpp ohlásil změnu portu serveru z 8080 na 9931, termín neuvedl

    Kdo si pouští model doma přes llama-server, najde ve výpisu novou hlášku: výchozí port se má změnit z 8080 na 9931. Kdy k tomu dojde, projekt neuvádí, a v kódu zatím…

  3. U sebe doma

    Nanbeige 4.2 se vejde do telefonu na 2,58 GB, kontext v něm spadl na 4 096 tokenů

    Na Hugging Face přibyl převod čínského modelu Nanbeige 4.2 do formátu běhového prostředí LiteRT-LM: jediný soubor o velikosti 2,58 GB, čtyřbitové váhy a kontext 4 096…

  4. U sebe doma

    Laguna S 2.1 uvádí milion tokenů kontextu, vlastní GGUF od výrobce má 256 tisíc

    Firma poolside vydala 21. července otevřené váhy modelu Laguna S 2.1 se 118 miliardami parametrů a kontextovým oknem 1 048 576 tokenů. Balíčky GGUF, které k němu sama…