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

Co jsou svazky Docker a jak je používáte?

Ve výchozím nastavení jsou kontejnery Docker zcela bezstavové. Data uložená v kontejneru jsou pomíjivá a budou vymazána, když se kontejner vypne. To samozřejmě není ideální pro mnoho aplikací, takže Docker poskytuje několik způsobů, jak se vypořádat se stavem.

Co jsou svazky?

Nejjednodušší způsob, jak zajistit trvalou data Dockeru, je spojit připojení , které doslova spojují umístění na disku hostitele s umístěním na disku kontejneru. Vytvářejí se a používají se jednoduše, ale jsou trochu nervózní, protože si musíte nastavit adresáře a spravovat je sami.

Svazky jsou jako virtuální pevné disky spravované Dockerem. Docker se stará o jejich uložení na disk (obvykle v /var/lib/docker/volumes/ ) a dává jim snadno zapamatovatelné jediné jméno, nikoli cestu k adresáři. Je snadné je vytvářet a odstraňovat pomocí rozhraní CLI Docker.

Tyto mají několik dalších výhod kromě toho, že je spravuje Docker. Fungují na kontejnerech pro Linux i Windows, lze je bezpečněji sdílet mezi více kontejnery a ovladače svazku umožňují poskytovatelům cloudu poskytovat vzdálený hosting pro podkladová data. Celkově se svazky používají snadněji než připojení připojení a jsou doporučeny Dockerem pro správu stavu.

Samozřejmě byste měli zvážit, zda opravdu potřebujete, aby byla data Dockeru uložena na serveru. U mnoha aplikací stačí k uložení dat, která používají, použití externího vzdáleného úložiště dat, jako je Amazon S3, nebo externí databáze, aniž by bylo nutné je vázat na frontend serveru.

Jak je používáte?

Nový svazek můžete vytvořit z příkazového řádku pomocí následujícího příkazu:

docker volume create nginx-config

A když potom spustíte svůj kontejner Docker, propojte jej s cílem v kontejneru pomocí --mount příznak:

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

Pokud spustíte docker inspect <name> , uvidíte objem uvedený v části Mounts sekce.

Pokud používáte Docker Compose, nastavení je také snadné. Jednoduše přidejte volumes záznam pro každou službu kontejneru, kterou máte, a poté namapujte název svazku na umístění v hostovi. Budete také muset poskytnout seznam svazků v volumes nejvyšší úrovně klíč pro vytvoření zprávy.

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

Tím se automaticky vytvoří svazek pro tuto zprávu. Chcete-li použít předem vytvořený svazek zvenku Compose, zadejte external: true v konfiguraci svazku:

volumes:
  cms-content:
    external: true

Pokud chcete místo toho jednoduše provést připojení k připojení a neobtěžovat se svazky, jednoduše zadejte název cesty místo názvu svazku a nedefinujte názvy svazků.

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

Pokud váš případ použití vyžaduje něco konkrétnějšího, můžete si přečíst úplnou dokumentaci Dockeru o používání svazků s Compose.

Přenos svazků dockeru

Svazky dockeru jsou pouze složky vytvořené automaticky a uložené na adrese /var/lib/docker/volumes/ , přičemž každý svazek je uložen pod ./volumename/_data/ . Chcete-li zálohovat a obnovit, můžete tyto svazky jednoduše zálohovat přímo.

Pokud byste místo toho chtěli použít Docker CLI, bohužel neposkytují snadný způsob, jak to udělat. Chcete-li zálohovat svazky kontejneru, budete potřebovat název kontejneru a také místo připojení, ve kterém jsou data uložena.

Způsob, jak to udělat, je trochu hack – budete muset spustit příkaz v novém kontejneru Docker, svázat připojení aktuálního adresáře shellu, připojit svazek k tomuto kontejneru a poté tar adresář do zálohy. Skončíte s backup.tar svazku:

docker run --rm --volumes-from containername -v $(pwd):/backup ubuntu tar cvf /backup/backup.tar /mountlocation

Poté můžete podobně extrahovat archiv v cílovém adresáři:

docker run --rm --volumes-from containername -v $(pwd):/backup ubuntu bash -c "cd /mountlocation && tar xvf /backup/backup.tar --strip 1"

To je však stále lepší než znát umístění hostitele, takže to můžete automatizovat, pokud chcete.


Docker
  1. Protokoly Docker:Co jsou a jak je používat (s příklady)

  2. Jaké další miniatury jsou k dispozici a jak je nainstalovat?

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

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

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

  3. Co jsou režimy SELinux a jak je nastavit

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

  2. Co je Umask a jak jej používat

  3. NFS Docker Volumes:Jak vytvořit a používat