Otevřete Monitorování aktivity nebo Správce úloh, spusťte malý kontejner, a Docker Desktop se stále může stát nejhlučnější věcí na stroji. V issue Docker Desktop z února 2026uživatel nahlásil, že com.docker.backend.exe vyšplhal na 100 % CPU po spuštění kontejnerů a pokračoval i po jejich zastavení.
Existuje jiný tah: sundejte démona ze svého notebooku úplně. Držte lokálně jen Docker CLI, spusťte Docker Engine na Linux VPS a namiřte docker context na něj přes SSH. Váš příkaz docker build se nemění. Build se prostě provede jinde, na nativním Linuxu bez vrstvy VM, kde šířka pásma VPS stahuje základní obrazy místo vaší kavárenské Wi-Fi, a bez licence Docker Desktop, kterou by bylo třeba sledovat.
Toto je kompletní nastavení pro tuto cestu: předpoklady, přesné příkazy docker context , multiarchitekturní buildy se vzdáleným buildx driverem, jak dimenzovat stroj a kde je vzdálený přístup špatná volba.
Stručně
- Problém: Docker Desktop vleče lokální VM, protlačuje souborové vstupy-výstupy přes vrstvu virtualizace a vyžaduje placené předplatné pro profesionální použití ve větších organizacích, včetně firem za limity bezplatné úrovně Dockeru.
- Řešení: odeberte Docker Desktop. Spusťte Docker Engine na Linux VPS, vytvořte
docker contextkterý na něj ukazuje přes SSH, a váš lokální příkazdocker buildběží na VPS, zatímco vaše CLI jen orchestruje. - Nákladový rámec: jeden skromný VPS nahradí licenci na místo a dá vám nativní rychlost buildu Linuxu. Celý tým může sdílet jeden build stroj místo placení za každého vývojáře.
- Poctivé výhrady: VPS musí být dosažitelný (žádné buildy v letadle), a potřebujete disciplínu s
.dockerignoreabyste nenahrávali víc než gigabajtový kontext buildu při každém běhu.
Předpoklady: co budete potřebovat
Před prvním příkazem si tohle srovnejte. Nic tu není exotického, pokud už Docker používáte denně.
- A Linux VPS s přístupem root nebo sudo. Ubuntu 22.04/24.04 nebo Debian 12/13 fungují všechny dobře.
- Docker Engine na VPS.
docker contextpřes SSH potřebuje Docker Engine 18.09 nebo novější na vzdáleném hostu, podle dokumentace context Dockeru. - Docker CLI 19.03 nebo novější lokálně. To je klient, který rozumí příkazu nejvyšší úrovně
contextpříkaz. - An Pár SSH klíčů. Pouze ověřování klíčem: ověřování heslem není podporováno pro
docker contextSSH připojení. - Vzdálený vzdálený uživatel ve skupině
dockerskupina, aby mohl mluvit se soketem démona bez sudo při každém volání.
Kolik vás Docker Desktop ve skutečnosti stojí
Náklady nejsou žádná záhada. Přistávají na třech místech, a ten, kdo si sem našel cestu, pocítil aspoň jedno z nich. Přesně je pojmenovat je to podstatné. Bolest už znáte.
Paměť a režie VM. Docker Desktop stále znamená lokální Linux VM. dokumentace nastavení Dockeru říká, že Docker Desktop může omezit, kolik paměti VM Docker Desktop používá, což je tichá část problému: ve smyčce stále je VM. Přesná stopa se liší podle OS a projektu, ale režimy selhání jsou reálné. issue Docker for Windows hlásí, že Docker Desktop spotřebovává mnoho gigabajtů RAM bez jediného běžícího kontejneru, a issue WSL2 popisuje buildy Dockeru, které nechávají paměť neuvolněnou po ukončení kontejnerů. Podstatou není, že každý stroj zahálí na stejném čísle. Nýbrž to, že Docker Desktop drží režii lokální VM uvnitř vaší vývojové smyčky.
Rychlost buildu a souborových vstupů-výstupů. Bind mounty a souborové operace překračující hranici VM jsou pomalejší než nativní přístup k souborovému systému Linuxu. dokumentace známých problémů Dockeru uznává náklady souborového systému virtualizace. Benchmarky komunity rutinně hlásí něco v rozmezí 3-10x pomalejší pro bind mounty přes vrstvu VM. To druhé číslo je zkušenost komunity, ne benchmark publikovaný Dockerem, ale směr nezpochybňuje nikdo, kdo viděl, jak se build plazí na Macu.
Licencování. Od změny z roku 2021 vyžaduje Docker Desktop placené předplatné pro firmy s více než 250 zaměstnanci nebo nad 10 mil. $ obratu. Aktuální úrovně na cenové stránce Dockeru jsou Personal ($0), Pro ($11/mo nebo $9 ročně), Team ($16/mo nebo $15 ročně) a Business ($24/mo). Úroveň Team vzrostla z $9 na $15 ročně v prosinci 2024, skok, který mění tichou položku v rozhovor s nákupem, a to je ta část, která opravdu pálí, když ji vynásobíte třiceti místy.

Alternativy a rozcestí lokální versus vzdálené
Téměř každá alternativa k Docker Desktop, kterou najdete, vymění jednoho lokálního démona za jiného lokálního démona. To je ta pravá osa, kterou je třeba si všimnout: volba, nad kterou se většina trápí, leží mezi lokálními nástroji, zatímco zajímavější rozcestí je lokální versus vzdálené. Jen vzdálená cesta sundá VM z vašeho stroje.
Zde je krajina, vedle sebe.
| Cesta | Platforma | Lokální režie VM | Forma nákladů | Klíčové omezení |
|---|---|---|---|---|
| Docker Desktop | Mac, Windows, Linux | liší se podle nastavení | Placené pro týmy za limity bezplatné úrovně Dockeru | Problém, který opouštíte |
| OrbStack | macOS only | ~300 MB v klidu (tvrzení dodavatele) | Zdarma osobní, $8/mo komerční | Jen Mac, licencování se vrací |
| Colima | macOS, Linux | ~400 MB na M1 | Zdarma | Není přímá náhrada |
| Podman Desktop | Mac, Windows, Linux | Založené na VM, bez root | Zdarma (Apache-2.0) | Compose potřebuje soket kompatibility s Dockerem |
| Rancher Desktop | Mac, Windows, Linux | Založené na VM | Zdarma (Apache-2.0) | Menší přijetí na Macu |
| Docker Offload | přes Docker Desktop 4.68+ | Nic lokálně, spravovaná cloudová relace | Předplatné Docker Business plus Docker Offload | Vyžaduje Docker Desktop, jedna relace na uživatele, efemérní prostředí |
| Vzdálený kontext VPS | Jakákoli (jen CLI lokálně) | Nic | Jeden VPS, bez licence na místo | VPS musí být dosažitelný |
Několik z nich si zaslouží větu poctivosti:
- OrbStack skutečně řeší problém prostředků na Macu pro osamělého vývojáře. Tvrdí ~300 MB v klidu a až 10x rychlejší start kontejnerů (stránka OrbStack), obě čísla dodavatele, ne nezávislé benchmarky. Pokud jste vývojář jen na Macu, který nechce spravovat vzdálenou infrastrukturu, OrbStack je lepší volba, a jeho komerční úroveň $8/mo (ceny OrbStack) se dostává pod úroveň Team Docker Desktopu. Háček: je jen pro Mac, a komerční licence přináší zpět přesně to, čemu jste se snažili uniknout.
- Colima je zdarma a klade CLI na první místo, ale jeho drsné hrany „není přímá náhrada“ jsou dobře zdokumentované, a některé týmy končí zpět na Docker Desktopu poté, co migrace uvázne.
- Podman Desktop a Rancher Desktop oba jsou zdarma a multiplatformní. Ani jeden není tichá náhrada, a kompatibilita Podmana s Compose jde přes jeho soket kompatibilní s Dockerem.
- Docker Offload je vlastní spravovaná služba Dockeru pro vzdálený build/běh, ale není to čistý odchod z Docker Desktopu. Aktuální dokumentace Dockeru ji uvádí jako vyžadující Docker Desktop 4.68 nebo novější, předplatné Docker Business a předplatné Docker Offload. Spouští úlohy na cloudových hostech spravovaných Dockerem, ale každý uživatel dostane jednu Offload relaci najednou, nečinné relace končí po 5minutové lhůtě, a prostředí je efemérní, takže kontejnery, obrazy a svazky zmizí, když relace skončí. To je v pořádku, pokud chcete spravovanou vzdálenou kapacitu uvnitř Docker Desktopu. Není to totéž jako trvalý VPS builder s vaší vlastní cache, diskem, root přístupem a bez závislosti na Desktopu.
Zůstat na místě je stále racionální v jednom případě: jednotlivec pod bezplatným prahem bez bolesti z rychlosti buildu nemá důvod cokoli měnit. Všichni ostatní mají rozcestí, které musí projít.
Klíčové ponaučení sekce: Rozhodnutí, na kterém záleží, není, který lokální nástroj vybrat. Je to, zda vůbec držíte démona na svém notebooku.

Jak docker context funguje přes SSH
Chcete-li sestavovat Docker obrazy na vzdáleném serveru přes SSH, spusťte Docker Engine na tom serveru, vytvořte docker context ukazující na něj pomocí docker context create name --docker "host=ssh://user@host", pak spusťte docker context use name. Poté se váš běžný příkaz docker build provede na vzdáleném hostu, a lokální CLI jen odesílá instrukce, zatímco démon dělá práci.
Kontext je pojmenovaný, přepínatelný cíl pro Docker CLI. Místo žonglování s proměnnými prostředí DOCKER_HOST nebo ručního stavění SSH tunelu pokaždé definujete vzdálené jednou a přepnete se na něj jako když měníte adresář. Build běží celý na vzdáleném hostu: stahování základních obrazů využívá uplink VPS, vrstvy se cachují na disku VPS, a práce CPU se děje na jádrech VPS. Jediné kroky citlivé na latenci jsou počáteční SSH handshake a nahrání vašeho kontextu buildu. Vše po tom je vzdálené.
Nastavení vašeho VPS build stroje
Celé nastavení jsou čtyři krátké příkazy plus blok konfigurace SSH. Ukážu očekávaný výstup tam, kde vám pomůže potvrdit, že každý krok sedl.
Krok 1: Dostaňte Docker Engine na Linux VPS. Připravte stroj a nainstalujte Docker Engine (18.09+ na vzdáleném je spodní hranice pro context SSH; vaše lokální CLI potřebuje 19.03+). Pokud raději nechcete instalaci spouštět sami, nasaďte VPS, který jej už dodává (více o tom níže). Vzdálený uživatel musí být ve skupině docker:
sudo usermod -aG docker $USER
# log out and back in for the group change to take effect
Krok 2: Nastavte ověřování SSH klíčem a alias konfigurace. Ověřování klíčem je povinné. Dejte hostu krátký alias v ~/.ssh/config abyste nemuseli přepisovat IP a cestu ke klíči:
# ~/.ssh/config
Host my-vps
HostName 1.2.3.4
User ubuntu
IdentityFile ~/.ssh/id_ed25519
IdentitiesOnly yes
Krok 3: Vytvořte kontext. Namiřte jej na vzdáleného démona přes SSH. Použijte úplnou formu:
docker context create my-vps --docker "host=ssh://[email protected]"
Nebo, pomocí aliasu konfigurace SSH z kroku 2:
docker context create my-vps --docker "host=ssh://my-vps"
Krok 4: Ověřte. Vypište své kontexty a zkontrolujte, že vzdálený engine odpovídá:
docker context ls
NAME DESCRIPTION DOCKER ENDPOINT
default * Current DOCKER_HOST based configuration unix:///var/run/docker.sock
my-vps ssh://my-vps
docker --context=my-vps version
Pokud to vypíše verzi serveru vzdáleného démona, vaše CLI mluví s VPS.
Krok 5: Přepněte a sestavte. Udělejte z VPS aktivní cíl, pak sestavujte jako obvykle:
docker context use my-vps
docker build -t myapp .
Ten build běží na VPS. Raději nepřepínat globálně? Zamiřte na jediný příkaz:
docker --context=my-vps build -t myapp .
Nebo to nastavte pro relaci shellu:
export DOCKER_CONTEXT=my-vps
Až budete chtít lokálního démona svého notebooku zpět (pokud jste si nějakého nechali), přepněte se domů:
docker context use default
Tip: hlídejte si svůj .dockerignore. Kontext buildu se nahraje na vzdáleného hosta před začátkem buildu. Zatoulaný adresář node_modules or .git znamená, že při každém běhu posíláte gigabajty po drátě, a vzdálená cesta bude působit pomaleji než lokální bez jakéhokoli dobrého důvodu. Těsný .dockerignore je ta jedna věc, která nejvíce ovlivňuje, zda vzdálená cesta působí rychle: vylučte závislosti, artefakty buildu a metadata VCS, a nahrávání se stane chybou zaokrouhlení.

Multiarchitekturní buildy se vzdáleným buildx driverem
Vytvořte buildx builder, který běží BuildKit uvnitř kontejneru na vzdáleném Docker hostu, pak sestavujte proti němu:
docker buildx create --name remote-builder \
--driver docker-container \
--use \
ssh://ubuntu@your-vps-ip
docker buildx inspect --bootstrap
docker buildx build \
--builder remote-builder \
--platform linux/amd64 \
-t myapp:latest \
--load .
Vzdálený --load flag je důležitý pro lokální spotřebu na jedné platformě: s driverem docker-container driver, sestavené obrazy se automaticky neobjeví ve vašem lokálním seznamu obrazů. Pokud sestavujete skutečný multiplatformní obraz, místo toho jej pushněte do registru:
docker buildx build \
--builder remote-builder \
--platform linux/amd64,linux/arm64 \
-t registry.example.com/myapp:latest \
--push .
To rozlišení je důležité. Vzdálený build na jedné platformě lze načíst zpět do vašeho lokálního úložiště obrazů. Multiplatformní obraz se obvykle pushuje do registru, protože je to seznam manifestů se samostatnými variantami pro každou cílovou architekturu. Tato sekce je volitelná: pokud jsou všechny vaše obrazy jednoarchitekturní, nastavení kontextu výše je celá práce.

Dimenzování a zabezpečení build stroje
Dvě otázky rozhodují, zda vám tento stroj dobře slouží: jak velký jej uděláte a jak držíte démona zamčeného. Buildy Dockeru jsou vázané na CPU, takže logika dimenzování je většinou o jádrech a dostatku RAM, aby se předešlo swapu. Logika zabezpečení je většinou o tom nevystavovat démona nikomu kromě vás.
Na jakou velikost jej nastavit
Dejte mu obecné specifikace. Můžete je namapovat na to, co váš poskytovatel nabízí.
- Spodní hranice (jeden vývojář, lehké buildy): 2 vCPU / 4 GB RAM / ~120 GB NVMe. This is the minimum that works, not what I'd reach for.
- Co bych ve skutečnosti nasadil (pro většinu týmů): 4 vCPU / 8-12 GB RAM / 240-300 GB NVMe. Four vCPUs stop your parallel build steps from serializing, 8-12 GB handles concurrent builds without touching swap, and the NVMe headroom keeps a healthy layer cache.
- Tým nebo těžké CI: 8 vCPU / 16-24 GB RAM for several developers sharing one box or big multi-stage Dockerfiles.
Protože jsou buildy vázané na CPU, vysokofrekvenční (na CPU optimalizovaná) jádra vám koupí rychlejší iteraci víc než RAM navíc za prahem swapu. GPU plány jsou tu irelevantní, protože buildy obrazů se GPU nedotýkají. A volba datacentra ovlivňuje jen odezvu SSH a čas nahrání kontextu, ne rychlost buildu: build běží na VPS bez ohledu na to, kde sedíte, takže zvolte lokaci blízko sebe pro svižný handshake a jděte dál.
Zabezpečení vzdáleného démona
Nastavení výše už vynucuje správnou výchozí hodnotu: ověřování SSH klíčem, žádný port démona nevystavený do sítě. Držte to tak. Ve chvíli, kdy vystavíte BuildKit nebo démona za hranici SSH (holý TCP endpoint, otevřený BuildKit port), stanete se cílem. vlákno na Hacker News o pomalých buildech, které jako první nadhodilo nápad vzdáleného VPS, varovalo také před útoky kryptotěžby na vystavené BuildKit endpointy. Neověřený build démon na otevřeném internetu je bezplatný výpočetní bufet.
Tip: nevystavujte démona. Pokud vám stačí jen SSH (stačí pro většinu jednostrojových nastavení), nikdy neotvírejte TCP port démona . Pokud opravdu potřebujete TCP přístup, dejte před něj vzájemné TLS (mTLS), aby se mohli připojit jen klienti s platným certifikátem. Jen SSH nebo mTLS: neexistuje přijatelná třetí možnost pro build stroj dosažitelný z internetu.
Jakmile stroj běží, je to univerzální Linux server, a je toho mnoho dalšího, co stojí za to na něm provozovat. Náš průvodce self-hosted stackem pro indie hackery je rozumné další čtení o tom, co dalšího si zaslouží místo na vašem VPS.
Pokud raději přeskočíte instalaci Docker Engine a půjdete rovnou na docker context create, náš Docker marketplace aplikace nasadí VPS s již nakonfigurovaným Docker Engine, Compose V2 a buildx. Jedno kliknutí a stroj je připravený na SSH, takže průchod výše začíná krokem 2 místo kroku 1.
Časté dotazy
Můžu spouštět buildy Dockeru na vzdáleném serveru a používat své lokální CLI?
Ano. Spusťte Docker Engine na vzdáleném hostu, vytvořte docker context ukazující na něj přes SSH, a přepněte se na ten kontext. Váš lokální příkaz docker build se pak provede na vzdáleném serveru, zatímco CLI na vašem stroji jen orchestruje, bez potřeby lokálního démona.
Jaký je rozdíl mezi docker context a DOCKER_HOST?
A docker context je pojmenovaný, přepínatelný, trvalý cíl, který definujete jednou a vyberete pomocí docker context use. DOCKER_HOST je jediná proměnná prostředí, kterou ručně nastavujete a rušíte pro každý shell. Kontext je moderní náhrada za starý přístup „tunel plus proměnná prostředí“.
Funguje docker compose se vzdáleným kontextem?
Ano. Compose V2 respektuje aktivní Docker kontext, takže příkazy docker compose běží proti hostu, na který kontext ukazuje. Služby a jakékoli buildy obrazů běží na vzdáleném hostu, stejně jako obyčejný docker build.
Co je Docker Offload a je zdarma?
Docker Offload je vlastní spravovaná služba Dockeru pro vzdálený build/běh, přesouvající kontejnerovou práci na cloudové hosty spravované Dockerem a přitom zachovávající pracovní postup Docker Desktop. Aktuální dokumentace Dockeru ji uvádí jako vyžadující Docker Desktop 4.68 nebo novější, plus předplatné Docker Business a Docker Offload. Je také založená na relacích: každý uživatel dostane jednu Offload relaci najednou, nečinné relace končí po 5minutové lhůtě, a vzdálené prostředí je efemérní.
Jak zabránit Docker Desktopu v používání tolik paměti?
Ladění limitů prostředků Docker Desktop jen zmenšuje stopu, která nikdy neklesne na nulu, protože VM má vždy podlahu. Cesta, která náklady na paměť skutečně odstraní, je odebrat lokálního démona úplně: spusťte Docker Engine na VPS a připojte se přes docker context přes SSH, aby na vašem stroji neběželo nic kromě CLI.
Můžu to udělat s Podmanem místo toho?
Můžete. Podman je dostupný jako engine kompatibilní s Dockerem, a docker context může ukazovat na vzdáleného Podman hosta, ale to vyžaduje, aby Podman vystavil svůj soket kompatibilní s Dockerem přes SSH. Tok příkazů je stejný. Nastavení na vzdálené straně se liší.