GNU/Linux >> Znalost Linux >  >> Panels >> Docker

Jak a proč používat vzdáleného hostitele dockeru

docker Program CLI je nezávislý na démonu Docker, který spouští vaše kontejnery. Přestože obě součásti obvykle běží na vašem místním počítači, můžete spustit docker příkazy proti vzdálenému hostiteli Docker.

Použití vzdáleného hostitele může být užitečné v několika scénářích. Můžete nastavit sdílenou instalaci Docker Engine pro malý vývojový tým. Každý vývojář se pak mohl připojit ke vzdáleným kontejnerům pomocí svého místního docker exec příkaz.

Vzdálení hostitelé jsou často cennější, když máte výkonný server, který se nepoužívá. Pokud je váš notebook pomalý nebo mu dochází úložiště, můžete ve vaší síti výrazně zvýšit výkon pomocí vyhrazeného hostitele Docker. Stále získáte veškeré pohodlí místního docker CLI ve vašem terminálu.

Nastavení vzdáleného hostitele

Ujistěte se, že máte nainstalovaný Docker v systému, který bude vaším vzdáleným hostitelem. Potřebujete pouze docker-cli balíček na vašem místním počítači, protože nebudete používat Docker Engine.

Nová instalace Dockeru poskytuje ve výchozím nastavení zásuvku Unix. Vzdálený přístup vyžaduje soket TCP. Spusťte dockerd (spustitelný soubor démona Docker) s -H příznak k definování soketů, ke kterým se chcete připojit.

sudo dockerd -H unix:///var/run/docker.sock -H tcp://0.0.0.0:2375

Tento příkaz připojí Docker k výchozímu Unixovému soketu a portu 2375 na adrese zpětné smyčky vašeho počítače. Opakováním -H se můžete navázat na další sokety a IP adresy vlajka.

Příznaky je třeba předat pokaždé, když spustíte dockerd . Pokud chcete, aby zůstaly zachovány i po restartu, vytvořte alias shellu nebo upravte definici služby Docker. Zde je návod, jak toho druhého dosáhnout pomocí systemd , který většina distribucí Linuxu používá pro správu služeb.

Upravit /etc/systemd/system/docker.service.d/options.conf (nebo jej vytvořte, pokud neexistuje). Najděte [Service] a změňte ExecStart řádek:

[Service]
ExecStart=/usr/bin/dockerd -H unix:///var/run/docker.sock -H tcp://0.0.0.0:2375

Znovu načtěte systemd konfigurace pro použití změn:

sudo systemctl daemon-reload

Pokud již Docker běží, použijte sudo systemctl restart docker restartujte službu. Démon Docker se nyní při každém spuštění připojí k portu TCP 2375. Ujistěte se, že provoz na port je povolen konfigurací brány firewall. Pokud používáte ufw, spusťte ufw allow 2375 otevřete port.

Připojování ke vzdálenému hostiteli

Docker CLI používá DOCKER_HOST proměnná prostředí k určení hostitele, ke kterému se má připojit. Pokud proměnná není nastavena, použije se Unixový socket místního démona.

Vzdáleného hostitele můžete použít pro jeden docker příkazem přidáním DOCKER_HOST proměnná:

DOCKER_HOST=tcp://192.168.0.1:2375 docker run httpd:latest -d

Tím se spustí nový kontejner z httpd:latest obrázek pomocí enginu Docker na adrese 192.168.0.1:2375 .

Pokud budete v jedné relaci spouštět více příkazů, exportujte DOCKER_HOST proměnnou do vašeho shellu:

export DOCKER_HOST=tcp://192.168.0.1:2375

docker run httpd:latest -d --name httpd
docker ps
docker rm httpd --force

Můžete vytvořit docker vždy používejte vzdáleného hostitele nastavením DOCKER_HOST globálně v konfiguračním souboru vašeho shellu. Zde je návod, jak to udělat v Bash:

echo "export DOCKER_HOST=tcp://192.168.0.1:2375" >> ~/.bashrc

Nyní DOCKER_HOST proměnná prostředí bude nastavena při každém spuštění vašeho shellu.

Vylepšení zabezpečení

Základní soket TCP je nechráněný. Kdokoli, kdo může dosáhnout vašeho počítače přes síť, může k ovládání vašich kontejnerů použít zásuvku Docker.

Docker podporuje SSH místo TCP. Toto je obvykle lepší volba, pokud má hostitel k dispozici server SSH. Zabraňuje neoprávněným uživatelům získat přístup. Použití SSH nevyžaduje žádnou extra konfiguraci. DOCKER_HOST umožňuje předat připojovací řetězec SSH:

DOCKER_HOST=ssh://user@hostname docker run -d --name httpd

Případně můžete použít vazby SSH k přímému navázání soketu Docker Unix vzdáleného hostitele na váš místní počítač:

ssh -L /var/run/docker.sock:/var/run/docker.sock

Nyní již nemusíte používat DOCKER_HOST vůbec. Vzdálený docker.sock bude vázán na místní protějšek. Docker to automaticky detekuje jako svůj standardní Unix socket.

Použití jednoho z řešení založených na SSH je preferovaným způsobem přístupu k zabezpečení démona Docker. Docker také podporuje TLS, pokud zadáte certifikační autoritu a klíče serveru a klienta:

dockerd --tlsverify --tlscacert=ca.pem --tlscert=cert.pem --tlskey=key.pem -H=0.0.0.0:2375

Nyní se klienti budou moci připojit na port 2375, pokud předloží platný certifikát SSL důvěryhodný certifikační autoritou ca.pem .

SOUVISEJÍCÍ: Co je soubor PEM a jak jej používáte?

Vytváření kontextů

Docker vám umožňuje nastavit několik „kontextů“ pro připojení k různým hostitelům. Místo DOCKER_HOST lze použít kontexty proměnná prostředí. Usnadňují přepínání mezi více vzdálenými hostiteli.

docker context create --docker host=tcp://192.168.0.1:2375 --description remote
docker context create --docker host=unix:///var/run/docker.sock --description local

Tyto příkazy vytvářejí dva různé kontexty – jeden pro místní docker.sock a jeden pro vzdálené připojení.

Mezi kontexty můžete přepínat pomocí docker context use příkaz:

docker context use remote

# Container is started on "remote"
docker run httpd:-latest -d

docker context use local

# Lists containers running on "local"
docker ps

Kontexty jsou užitečné, když pracujete s několika hostiteli Dockeru. Jsou méně náročné než neustálé resetování DOCKER_HOST proměnná, jak se pohybujete mezi hostiteli.

Nevýhody vzdálených hostitelů

Již dříve jsme poznamenali, že vzdálený hostitel může zlepšit výkon sestavení. Toto prohlášení je pravdivé pouze v případě, že počítač s Docker Engine je rychlejší než váš místní hardware. Největší nevýhodou vzdáleného hostitele je dodatečná režie interakce přes síť. Stáváte se také závislými na síti – pokud ztratíte připojení, nebudete moci spravovat své kontejnery.

Pokud hodláte používat vzdáleného hostitele jako hlavní server sestavení, měli byste mít spolehlivé vysokorychlostní síťové připojení. První docker build stage odešle obsah kontextu sestavení vašeho obrázku (obvykle váš pracovní adresář) do Docker Engine. To je rychlé, když Docker běží lokálně, ale nahrání na vzdálený počítač může trvat mnohem déle.

Vystavení instance démona Docker přes síť představuje bezpečnostní riziko. Musíte se ujistit, že přístup je omezen na autorizované uživatele a zařízení. Neúmyslné odhalení soketu démona Docker by mohlo útočníkům poskytnout neomezený přístup k hostiteli. Docker obvykle běží jako root takže je důležité, aby kontejnery mohli spustit pouze důvěryhodní jednotlivci.

Závěr

Nastavení vzdáleného hostitele Dockeru vám umožní oddělit instance vašich kontejnerů od vašeho místního vývojového počítače. Vyhrazený server sestavení Docker může nabídnout lepší výkon a větší úložný prostor pro obrázky.

Měli byste se postarat o audit zabezpečení vaší implementace. Prostý TCP soket může být bezpečný v privátní síti, ale neměl by být nasazen v žádném citlivém prostředí. Používání SSH pomáhá zmírnit rizika, pokud dodržujete hygienu zabezpečení SSH, jako je povinné ověřování založené na klíčích.


Docker
  1. Jak nainstalovat a hostovat server OpenVPN pomocí Dockeru

  2. Jak nainstalovat a používat Docker v Ubuntu 20.04

  3. Jak nainstalovat a používat Docker Compose na CentOS

  1. Jak nastavit a používat soukromý registr dockerů

  2. Jak nainstalovat a používat Docker na Ubuntu 20.04

  3. Kdy a proč používat Docker

  1. Jak nainstalovat a používat Docker na Ubuntu 18.04

  2. Jak nainstalovat a používat Docker Compose na Ubuntu 18.04

  3. Jak nainstalovat a používat Docker na CentOS 7