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

Jak připojit hostitelský adresář do kontejneru Docker

Docker poskytuje nástroje pro přemostění souborových systémů kontejnerů a hostitelského operačního systému, na kterém je kontejner spuštěn, jako jsou například připojení připojení a svazky. Ty mohou být velmi užitečné ve vývojovém i produkčním prostředí.

Proč Mount From The Host?

Obecně platí, že s Dockerem byste chtěli, aby obrazy běžely nezávisle na hostitelském systému. Pokud byste chtěli například aktualizovat kód aplikace nebo konfigurační soubory, pravděpodobně budete chtít vytvořit novou verzi kontejneru a znovu ji nasadit. To vám umožní rychle škálovat a přesouvat obrázky, aniž byste se museli starat o hardware, na kterém běží.

Ve vývojářském prostředí však může být velmi užitečná možnost přímo připojit adresář, aby bylo možné znovu načíst konfiguraci nebo kód. Můžete například pracovat na souboru JS nebo PHP pluginu, který můžete jednoduše přetáhnout do kontejneru. Nebo můžete chtít připojit celý konfigurační adresář NGINX pro práci na vašem webu. Bez ohledu na váš případ použití není připojování souborů špatným řešením.

Je to také užitečné v produkci, pokud máte hostitelské služby, které závisí na souborech v kontejnerech. Můžete mít například službu příjmu a agregace protokolu, která by preferovala, kdyby soubory protokolu kontejneru byly v adresáři přístupném z hostitele. I když pravděpodobně existují určitá čistě in-Docker řešení vašich problémů, někdy je jednodušší svazek jednoduše připojit.

Kompatibilita s macOS

Poznámka:Vzhledem k tomu, že připojení jsou zpracována prostřednictvím rozhraní Docker API, budou fungovat bez ohledu na hostitelský OS. Nicméně macOS má zvláštní ochranu a připojení mimo několik hostitelských adresářů mohou selhat s „připojením odepřeným“ za běhu. To zahrnuje /Users , která pokrývá většinu operací, ale pokud to potřebujete, můžete to opravit v nastavení Dockeru v části Předvolby> Zdroje> Sdílení souborů přidáním cílového adresáře do seznamu.

Připojení hostitelského adresáře

Vytvoření svazku je velmi jednoduché. Přidejte jej pomocí --mount type=bind příznak při spuštění, určující zdrojový a cílový adresář, ke kterému se má připojit.

docker run -d 
-it 
--name container 
--mount type=bind,source=/nginxconfig,target=/etc/nginx 
nginx:latest

Bind mounts jsou nejjednodušší, ale Docker poskytuje Volume API pro správu těchto druhů připojení o něco lépe. Uložená data budou spravována Dockerem a adresář svazku bude automaticky vytvořen v adresáři Dockeru. Možná to není to, co chcete, pokud máte na mysli existující adresář, ale tato metoda je lepší, protože nezávisí na struktuře souborů hostitelského OS.

docker volume create nginx-config

docker run -d 
--name devtest 
--mount source=nginx-config,target=/etc/nginx 
nginx:latest

K definování svazků můžete také použít Docker Compose:

version: "3.0"
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"
    volumes:
      - nginx-config:/etc/nginx/
volumes:
  nginx-config:

Ty jsou uloženy ve standardním formátu dostupném pro Linux:

/var/lib/docker/volumes/volumeID/_data

V systému macOS se však budete muset připojit k virtuálnímu počítači Docker, abyste mohli prohlížet svazky.

SOUVISEJÍCÍ: Co jsou svazky Dockeru a jak je používáte?

Připojování jednotlivých souborů

Připojení celých adresářů funguje dobře, když chcete upravit velké množství konfiguračních/kódových souborů, které jsou uloženy na hostiteli. Někdy však můžete chtít připojit pouze jeden soubor, který chcete upravit, aniž byste se dotkli ostatních souborů.

Chcete-li to provést, můžete spustit kontejner s připojením vazby, které podporuje jednotlivé soubory, pokud zadáte cestu:

docker run -it 
--mount type=bind,source=/path/file.cfg,target=/etc/example/file.cfg 
nginx sh

Pokud chcete tímto způsobem připojit mnoho souborů, můžete je všechny umístit do stejného hostitelského adresáře a připojit tento adresář do jiného umístění v kontejneru. Potom můžete použít symbolické odkazy uvnitř kontejneru k propojení souborů v připojeném adresáři do správného umístění.


Docker
  1. Jak spustit MySQL v kontejneru Docker

  2. Jak přiřadit statickou IP ke kontejneru Docker

  3. Jak získat přístup k síťovému jmennému prostoru Docker Container z hostitele

  1. Jak SSH do kontejneru Docker

  2. Jak připojit nebo symbolicky propojit jeden soubor v kontejneru Docker

  3. Jak vypsat Docker kontejnery

  1. Learning Docker:Jak vytvořit kontejner Docker

  2. Jak nainstalovat Vim do kontejneru Docker

  3. Jak opustit kontejner Docker