Práce s kontejnery Docker na vzdálených serverech Stala se chlebem a máslem pro každého, kdo chce nasazovat moderní aplikace, aniž by se musel zabývat závislostmi, verzemi knihoven a klasickým „na mém počítači to funguje“. Když však přejdeme od spouštění jednoduchého docker run Pokud jde o nastavení seriózního nasazení lokálně na linuxovém serveru s Docker Compose, sdílenými složkami GitHub, Pleskem, Portainerem nebo dokonce grafickými aplikacemi přístupnými přes prohlížeč, věci se trochu komplikují.
Pokud je vaším cílem nasadit kontejnery Docker na vzdálený server (Ubuntu, Debian, Windows s WSL 2, cloudový server, Plesk atd.) a dělat to udržovatelným, automatizovaným a bezpečným způsobem. V této příručce najdete poměrně kompletní cestu: od základního používání Docker Compose na dálku, přes vývojová prostředí s VS Code, nasazení z Plesku, administraci s Portainerem až po vzdálené spouštění grafických aplikací pomocí noVNC a Caddy.
Základní pojmy: Docker kontejnery a vzdálené nasazení
Docker je kontejnerová platforma Zabalí aplikaci spolu se vším potřebným (knihovny, závislosti, binární soubory, minimální konfigurace systému), aby běžela stejně na jakémkoli počítači s nainstalovaným Docker enginem. Klíčový rozdíl oproti virtuálnímu počítači spočívá v tom, že kontejner neobsahuje kompletní operační systém; místo toho sdílí hostitelské jádro, což má za následek lehčí image a lepší výkon.
Nasazení kontejnerů Docker na vzdálené servery Obvykle máte hostitele (například server Ubuntu v cloudu) s Dockerem a volitelně i Docker Compose a poté na něj odesíláte kód nebo obrázky ke spuštění. Můžete to udělat ručně přes SSH, automatizovat to pomocí akcí GitHub nebo to integrovat s panely jako Plesk nebo nástroji jako Portainer.
Hlavní reálné scénáře, se kterými se setkáte Když mluvíme o „vzdáleném Dockeru“, existují tři aspekty: lokální vývoj, ale spouštění kontejnerů na jiném počítači (nebo ve WSL 2), automatizované nasazení backendových/frontendových služeb a správa produkčních kontejnerů (monitorování, logování, restarty, síťové zásady atd.). Technologie je stejná; mění se pouze způsob její orchestrace.
Kromě tradičních backendových služebDocker umožňuje něco méně známého, ale velmi výkonného: spouštění grafických aplikací (e-mailových klientů, IDE, analytických nástrojů atd.) uvnitř vzdálených kontejnerů a přístup k nim z prohlížeče pomocí VNC přes WebSocket. Je to pohodlný způsob, jak využít výkonné servery, když váš počítač není dostatečně výkonný.
Z Docker Run do Docker Compose na vzdáleném serveru

Poměrně běžný vzorec ručního nasazení Spočívá v tom, že máte repozitář kódu na GitHubu, vzdálený server Ubuntu s nainstalovaným Dockerem a pracovní postup CI/CD (například akce GitHubu), který při odeslání do větve provádí následující: development o main:
- Připojte se ke vzdálenému serveru přes SSH.
- Zastavte a odstraňte spuštěné kontejnery.
- Stáhněte si nové obrazy z Docker Hubu (nebo ze svého soukromého registru).
- běh
docker runpro každou službu. - Nechte Nginx (nebo reverzní proxy, kterou používáte) přesměrovat provoz na porty každého kontejneru.
Když přepnete na Docker Compose Postup je výrazně zjednodušen, protože místo správy kontejnerů jeden po druhém definujete celý stack (frontend, backend, databázi, cache atd.) v jednom. docker-compose.yml, s jeho sítěmi, objemy a proměnnými prostředí.
Nejjednodušší (a docela běžný) postup s akcemi GitHubu Pracovní postup by měl provádět cd do adresáře projektu na vzdáleném serveru (kde se nachází váš docker-compose.yml) a spouštět příkazy jako:
docker compose pullpřinést nejnovější obrázky.docker compose downzastavit a odstranit staré kontejnery (volitelně s--remove-orphans).docker compose up -d --buildpokud vytváříte obrazy ze samotného serveru.
Tento přístup funguje dobře a je poměrně robustníPokud máte dobrou kontrolu nad přihlašovacími údaji, proměnnými prostředí a svazky, můžete zlepšit zabezpečení tím, že zabráníte akcím GitHubu v plném root přístupu k serveru, omezíte SSH klíče, použijete vyhrazené uživatele nebo dokonce zpřístupníte Docker jako zabezpečenou vzdálenou službu s certifikáty, místo abyste vše spouštěli přes SSH.
Neexistuje lepší „magický způsob“ než tento. Pro jednoduché prostředí: klíčem je automatizovat a dobře napsat docker-compose.ymlPoužívejte neměnné tagy obrázků (např. specifické verze) a mějte nějaký mechanismus pro vrácení předchozí verze (např. ukládání předchozí verze psaného textu nebo obrázků).
Vzdálené vývojové prostředí s Dockerem, WSL 2 a VS Code

Ve Windows je velmi běžné vyvíjet s Dockerem pomocí WSL 2.Docker Desktop pro Windows nabízí engine založený na WSL 2, který umožňuje spouštět kontejnery Linuxu a Windowsu ze stejného počítače a zároveň upravovat kód pomocí VS Code a testovat v lokálním prohlížeči.
Typický pracovní postup pro nastavení vývojového prostředí se vzdálenými kontejnery pomocí WSL 2 je následující:
- Nainstalujte WSL 2 a distribuci Linuxu (například Ubuntu).
- Docker Desktop nainstalujete do Windows a v Nastavení > Obecné povolíte možnost „Používat engine založený na WSL 2“.
- V Nastavení > Zdroje > Integrace WSL vyberete distribuce WSL, na kterých má Docker fungovat.
- Instalaci zkontrolujete pomocí
docker --versiona běhdocker run hello-worldv rámci distribuce WSL.
Vyvíjet „uvnitř“ kontejnerů A nepoužívejte jako engine jen Docker; klíčový je VS Code. S WSL, Dev Containers a rozšířeními Docker můžete dělat věci jako:
- Otevřete složku projektu hostovanou ve WSL přímo ve VS Code.
- Znovu otevřete tuto složku „ve vývojovém kontejneru“ (Dev Container) pomocí
Dockerfileadevcontainer.jsonkteré popisují vaše ideální prostředí (verze Pythonu, Node atd.). - Laďte aplikaci z VS Code, zatímco běží v kontejneru.
Velmi častý příklad Pracuje s projektem Django nebo Node.js: naklonujete repozitář v rámci WSL, otevřete složku pomocí code .Vyberete definici vývojového kontejneru (například „Python 3“) a VS Code vytvoří obraz a spustí kontejner se všemi závislostmi. Odtud můžete kód spouštět, ladit a ověřovat, zda běží na Linuxu, i když je vaším hostitelským systémem Windows.
Tento přístup je užitečný i v případě, že váš stroj není příliš výkonný.Protože můžete část zátěže přesunout na vzdálený server pomocí Dockeru a připojit se k němu pomocí VS Code přes SSH a Dev Containers, což funguje téměř jako lokální server, ale spoléhá se na zdroje serveru.
Nasazení aplikací na cloudovém serveru pomocí Dockeru a Docker Compose
Nastavení cloudového serveru s Dockerem připraveným k nasazení U většiny poskytovatelů je to velmi rychlé: vyberete si obraz systému, který už má předinstalovaný Docker, počkáte pár minut a váš počítač je připraven přijímat kontejnery.
Typický vzor pro nasazení jednoduché aplikace Node.js Bylo by to toto:
- Vytvořte projekt Node.js (například „Hello world“ s Expressem) na vašem lokálním počítači: složka projektu, podadresář
app,npm init, instalace závislostí (jako napříkladexpress) a aindex.jskterý nastaví server na portu 3030 se základní zprávou. - Dockerizujte aplikaci pomocí dockerfile který definuje základní obrázek (například
node:12),WORKDIRZkopírujte soubory aplikace, spusťtenpm installa odhalte vnitřní port. - Přidejte a .dockerignore aby se vyhnul vkládání věcí jako
node_modules. - Vytvořit docker-compose.yml v kořenovém adresáři projektu s uvedením verze (například
3.8) a definování hlavní služby, jejíbuild, mapování portů (3030:3030) a příkaz (node index).
Jakmile budete mít projekt a text připravenýNasazení na vzdálený server obvykle probíhá takto:
- K serveru se připojíte přes SSH.
- Naklonujete repozitář nebo nahrajete soubory (Git, SCP, rsync…).
- nainstalujete docker-compose pokud tam ještě nebyl (v mnoha distribucích ho musíte nainstalovat odděleně od Dockeru, například stažením binárního souboru z GitHubu a udělením oprávnění ke spuštění).
- Popravujete
docker-compose up(odocker compose up(v závislosti na verzi), aby se stáhly obrazy, vytvořil se obraz aplikace a spustily se kontejnery.
Jedním z často přehlížených bodů je firewall dodavatele.Pokud vaše služba naslouchá na portu 3030, budete ho muset otevřít v pravidlech firewallu nebo vytvořit specifickou zásadu a přiřadit ho k serveru. Jinak se vám zvenčí zobrazí pouze zpráva „připojení odmítnuto“, a to i v případě, že kontejner běží správně.
Jakmile bude funkční, budete mít přístup k aplikaci pomocí veřejné IP adresy serveru a odhaleného portu (například https://IP_DEL_SERVIDOR:3030), nebo skrytím tohoto portu za reverzní proxy, jako je Nginx/Traefik, která naslouchá na portu 80/443.
Správa vzdálených kontejnerů pomocí Plesku a Dockeru
Pokud používáte Plesk jako ovládací panelJeho rozšíření Docker můžete také použít ke správě kontejnerů přímo z webového rozhraní, a to jak na samotném serveru, tak na vzdálených hostitelích Dockeru.
Plesk podporuje Docker na široké škále operačních systémůCentOS 7, RHEL 7, Debian 10/11/12, různé verze Ubuntu (18.04, 20.04, 22.04, 24.04), AlmaLinux 8/9, Rocky Linux 8.x a aktualizovaný Virtuozzo 7. V Plesku pro Windows se Docker nespouští lokálně, ale na vzdáleném počítači, který funguje jako hostitel Dockeru.
Je třeba mít na paměti několik důležitých omezení:
- Rozšíření Docker nelze použít, pokud je Plesk nasazen uvnitř kontejneru Docker.
- Pro používání vzdálených služeb Dockeru (tj. externích hostitelů) potřebujete další licenci nebo specifické balíčky (Hosting Pack, Power Pack, Developer Pack).
- Kontejnery Docker spravované Pleskem nejsou jako takové „migrovatelné“, i když data, která používají, můžete zálohovat pomocí svazků nebo snapshotů.
Z rozhraní Plesku můžete vyhledávat obrázky jak v lokálním repozitáři (obrázky již stažené na hostitele), tak v Docker Hubu. Panel vás provede spuštěním kontejneru:
- Navštívit Docker > Kontejnery > Spustit kontejner.
- Najděte požadovaný obraz a projděte si jeho dokumentaci na Docker Hubu (pokud je to relevantní).
- Volitelně vyberte konkrétní popisek/verzi obrázku.
- Nakonfigurujte parametry kontejneru (proměnné prostředí, porty, svazky, paměť, automatické spuštění atd.) a klikněte na Spustit.
Plesk vám také umožňuje spravovat pokročilá nastavení. Pro každý kontejner: přepřiřaďte porty (automaticky nebo manuálně), rozhodněte se, zda je port přístupný z internetu nebo pouze z localhostu, omezte RAM, kterou může kontejner spotřebovat, definujte svazky (cesta na hostiteli a v kontejneru) nebo přidejte tolik proměnných prostředí, kolik potřebujete.
Ohledně aspektu vzdálené orchestracePlesk může pracovat se „vzdálenými službami Dockeru“. To zahrnuje konfiguraci démona Dockeru na vzdáleném hostiteli (například pomocí /etc/docker/daemon.json s podporou socketů TLS a TCP), generování certifikátů .pem a zaregistrujte daného hostitele v Plesku z Docker > Prostředí > Přidat serverPak můžete označit daný uzel Dockeru jako aktivní a přepínat mezi různými servery ze stejného rozhraní.
Nasazení stacků Docker Compose z Plesku
Pokud již pro svou infrastrukturu používáte Docker ComposeMožná by vás mohlo zajímat, kdyby Plesk řešil nasazení „zásobníků“ ze souborů. docker-compose.yml.
Pracovní postup pro nasazení příkazu Compose v Plesku Je to relativně jednoduché:
- Vstoupit Docker > Zásobníky > Přidat zásobník.
- Přiřaďte zásobníku název projektu.
- Vyberte zdroj souboru pro psaní: editor (vložte obsah), nahrajte soubor z počítače nebo vyberte existující soubor ve webovém prostoru domény.
- Potvrďte konfiguraci a povolte Plesku deklaraci a vytvoření definovaných kontejnerů.
Vše, co je postaveno během procesu stavby Přidružený soubor Compose je uložen v hlavním adresáři webu, což usnadňuje přístup k protokolům, mezilehlým artefaktům nebo dalším souborům generovaným sestavením.
Plesk také usnadňuje správu lokálních obrázků: od Docker > Obrázky Můžete filtrovat, prohlížet si různé štítky produktů, sledovat využité místo a mazat zastaralé obrázky pro uvolnění místa na disku. To je důležité ve vzdálených prostředích s omezeným prostorem.
Pokud používáte Nginx jako front-endový webový serverPlesk používá pravidla proxy (například v nginx.conf (z domény) pro směrování provozu do vašich kontejnerů Docker, a to i v situacích za NAT. To vám ušetří ruční práci s konfiguracemi reverzní proxy na vzdálených serverech.
Správa vzdálených kontejnerů pomocí Portaineru
Portainer je lehké webové rozhraní Pro Docker to výrazně zjednodušuje každodenní práci těm, kteří nechtějí žít na příkazovém řádku. Funguje sám o sobě jako kontejner a dokáže spravovat lokální hostitel nebo více vzdálených hostitelů (dokonce i s Portainer Agent).
Instalace Portaineru na server pomocí Dockeru Obvykle postupujete podle těchto základních kroků:
- Vytvořte svazek pro data Portaineru:
docker volume create portainer_data. - Spusťte kontejner Portainer namapováním portů 8000 a 9000 a připojením Docker socketu (
/var/run/docker.sock) a objem dat:docker run -d -p 8000:8000 -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer.
Díky tomu bude Portainer naslouchat na portu 9000 serveru.Jako vždy budete muset port otevřít ve firewallu nebo jej zpřístupnit prostřednictvím reverzní proxy HTTPS. Při prvním přístupu přes prohlížeč vás Portainer požádá o vytvoření uživatele s oprávněními správce a poté si můžete vybrat, zda chcete spravovat lokální Docker nebo další vzdálené hostitele.
Panel Portainer je docela intuitivní.Uvidíte aktivní kontejnery, jejich protokoly, statistiky spotřeby zdrojů, zásobníky Compose, sítě, svazky a další. A co je nejdůležitější, umožňuje vám znovu vytvářet kontejnery s různými parametry, aktualizovat obrazy, spravovat zásobníky a centralizovat více vzdálených serverů z jednoho rozhraní.
Spouštět grafické aplikace ve vzdálených kontejnerech a přistupovat k nim přes prohlížeč
Když vašemu počítači dojdou prostředky Pokud ale potřebujete používat náročné grafické aplikace (jako jsou e-mailové klienty, IDE nebo nástroje pro reverzní inženýrství), velmi zajímavým řešením je spouštět je v kontejnerech Docker na výkonném serveru a přistupovat k nim přes web.
Velmi dobře zdokumentovaná případová studie Myšlenkou je zapouzdřit Mozilla Thunderbird do kontejneru, zpřístupnit jeho grafické rozhraní prostřednictvím TigerVNC/noVNC a zabezpečit přístup pomocí Caddy. Tento koncept lze znovu použít pro téměř jakoukoli linuxovou aplikaci s grafickým rozhraním.
Základní architektura tohoto typu grafického kontejneru obvykle zahrnuje:
- Lehký VNC/X11 server (TigerVNC), který funguje jako zobrazovací server.
- Minimalistický správce oken (OpenBox) pro práci s okny.
- Malý, snadno použitelný typ serveru
easy-novnckterý zpřístupňuje VNC jako WebSocket a generuje HTML stránku pro připojení z prohlížeče. supervisordnebo podobné pro spuštění a sledování všech procesů v kontejneru.- Samotná aplikace (Thunderbird, GIMP atd.) nakonfigurovaná pro zobrazení na vzdáleném displeji (
DISPLAY=:0).
V praxi se nastaví pracovní adresář. (například ~/thunderbird) kde jsou umístěny:
- Un supervisor.conf který definuje programy, které se mají spustit: TigerVNC, easy-novnc, OpenBox a hlavní aplikace, s prioritami, aby se grafický server spustil před aplikací.
- Un menu.xml OpenBox konfiguruje menu na ploše (hlavní aplikace, terminál, monitor procesů pomocí htop atd.).
- Un vícestupňový Dockerfile který v první fázi kompiluje
easy-novncs Go a ve druhém kroku vytvoří finální obraz na Debianu, nainstaluje openbox, tigervnc, supervisor, konzolové utility, aplikaci (v příkladu Thunderbird), zkopíruje binární soubory a konfigurace, vytvoří uživatele bez oprávnění root a definuje trvalý datový svazek v/data.
Výchozí příkaz kontejneru je obvykle delegován na supervisord., spuštění jako u běžného uživatele gosuPo úpravě oprávnění k datovému svazku se při spuštění kontejneru automaticky spustí VNC, noVNC, správce oken a aplikace a vy potřebujete pouze přístup k HTTP portu, který je zpřístupněn příkazem easy-novnc.
Aby byl robustnější a uživatelsky přívětivější pro internetJe dobré umístit před vaši grafickou aplikaci webový server, jako je Caddy, také v kontejneru, který funguje jako reverzní proxy, přidává základní ověřování (hashované uživatelské jméno a heslo) a volitelně zpřístupňuje WebDAV pro přístup k souborům. /data z vašeho lokálního počítače.
Orchestrujte řešení pomocí sítí, svazků a Caddy
Aby byl tento typ nasazení organizovaný Obvyklý přístup spočívá ve vytvoření vlastní sítě Docker a jednoho nebo více datových svazků:
- Síť, například
thunderbird-net, který bude sdílen všemi souvisejícími kontejnery. - Volumen
thunderbird-datakterý bude obsahovat uživatelský profil a trvalá data grafické aplikace.
Kontejner grafické aplikace Můžete to spustit například takto:
- Politika
--restart=alwaysaby se mohlo samo postavit. - Sestavení objemu
thunderbird-data:/data. - Internetové připojení
thunderbird-net. - Identifikovatelné jméno (
thunderbird-app(například), který Caddy použije pro reverzní proxy.
V jiném adresáři (například ~/caddy) je konstruován obraz Caddy s potřebnými moduly (například pluginem WebDAV) a Caddyfile který definuje:
- Server na portu 8080.
- Un
reverse_proxynathunderbird-app:8080(nebo port, který noVNC zpřístupňuje). - Další cesty pro navigaci v souborech (
/files) a pro WebDAV (/webdav), oba obsluhující obsah datového svazku. - Blok
basicauthkterý chrání všechny cesty pomocí uživatele a hašovaného hesla načteného z proměnných prostředí.
Při vytváření kontejneru Caddysestaví se stejný objem thunderbird-data:/data, připojuje se k síti thunderbird-net a jeho port je zveřejněn (například -p 8080:8080) na hostiteli. Stačí v prohlížeči přejít na http://IP_DEL_SERVIDOR:8080Zadejte své přihlašovací údaje a klikněte na tlačítko Připojit, abyste mohli začít používat grafickou aplikaci vzdáleně.
Dlouhodobá údržba je jednoducháKdyž potřebujete aktualizovat, můžete kontejnery zastavit a odstranit, znovu sestavit obrazy s novými verzemi a znovu je spustit. docker run zachování objemu dat, aby nastavení a soubory uživatele zůstaly nedotčené.
Se všemi těmito prvky (Docker Compose, Plesk, Portainer, VS Code, WSL 2, Caddy, noVNC…) Je možné nastavit cokoli od jednoduchých backendových nasazení až po vzdálené plochy zapouzdřené v kontejnerech a dokonale přístupné přes prohlížeč, s využitím serverů s mnohem větším výkonem než váš počítač a s udržením poměrně jemné kontroly nad sítěmi, zabezpečením, úložištěm a aktualizacemi.