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

Měli byste spustit databázi v Dockeru?

Kontejnerování zátěže serverů je stále populárnější a je stále běžnější vidět nasazení webových serverů běžících v kontejnerech. Mohou být stejné výhody aplikovány na databáze?

Docker zvládne stavové úlohy

Nejlepší je začít položením jiné otázky:C an provozujete dokonce databázi v Dockeru? Obecně platí, že Docker není určen pro stavové služby. Jedním z hlavních prodejních míst kontejnerů je to, že je lze zastavit a spustit podle libosti, obvykle připojením k autoritativnímu zdroji dat, jako je databáze, pro uložení jejich stavu. Všechna data v kontejneru jsou pomíjivá a jsou zničena, když je kontejner smazán.

Díky tomu je spouštění stavových úloh obzvláště náročné, ale naštěstí má Docker nějaké nástroje pro řešení stavu:svazek a připojení připojení. Ty umožňují připojit umístění na hostitelském počítači k umístění v kontejneru, které bude ukládat data, i když se kontejner vypne. Tímto způsobem můžete kontejnery provozovat dlouhodobě, aniž byste se museli obávat ztráty dat.

Připojení svazku jsou preferovaným způsobem zpracování většiny scénářů. Umožňují vám vytvořit svazek, který spravuje Docker:

docker volume create my-volume

Poté tento svazek připojte k cílovému umístění uvnitř kontejneru:

docker run --mount source=my-volume,target=/app

Uchycení vázání je jednodušší. Jsou to, co používají svazky pod kapotou, ale umožňují vám ručně nastavit umístění na hostitelském disku namísto toho, abyste jej museli spravovat prostřednictvím Dockeru.

docker run ~/nginxlogs:/var/log/nginx

V praxi může být použití těchto držáků trochu složitější. Mnoho spravovaných služeb Docker, jako je ECS AWS nebo spravované Kubernetes, vám nedává přímý přístup k základnímu serveru a jako takové nebudete moci přímo vytvářet připojení k připojení. Obvykle se to řeší pomocí služby jako EFS, která umožňuje připojení ke kontejnerům ECS, nebo pomocí externího úložiště dat, jako je databáze.

SOUVISEJÍCÍ: Jak nainstalovat Docker a Docker Compose v systému Linux

Měli byste si pro svou databázi vybrat Docker?

Docker obecně není vhodný pro manipulaci se stavem. Úlohy založené na Dockeru obvykle zadávají tento problém databázím. Vzhledem k tomu, že řešením problému je databáze, je praktické umístit databázi do Dockeru?

Odpověď zní většinou „ne obvykle“. Docker od svého vzniku ušel dlouhou cestu a kontejnerizace databází již není strašný nebo „špatný“ nápad. Určitě to lze udělat a má to určité výhody. U většiny obecných pracovních zátěží však výhody nepřevažují nad komplikacemi.

Chcete-li zjistit proč, podívejme se na výhody, které Docker přináší:

  • Snadné škálování:servery lze rychle vytvářet a ničit, aby uspokojily poptávku
  • Snazší nástroje CI/CD:automatické sestavení je triviální
  • Kodifikace vaší infrastruktury:všechny základní knihovny a nastavení jsou řešeny v Dockerfile

Většina z nich se přesně nepřenáší do databázových úloh, což jsou často dlouhodobé snahy, které upřednostňují integritu dat nade vše. Obecně nechcete, aby se většina databází automaticky škálovala; sami obvykle nedostávají pravidelné aktualizace kódu a jako takové nemají tolik užitku z provozu v kontejnerech. A pokud stejně jen připojujete místní úložnou jednotku, proč ji nespustit mimo Docker?

Pokud se chcete osvobodit od složitosti správy databází, Docker není nástroj pro tuto práci. Je to prostě zbytečná komplikace pro zátěž, kterou lze snadno spustit na standardním VPS. Pravděpodobně budete mnohem lépe používat plně spravovanou databázi jako službu, jako je RDS společnosti AWS. To přináší spoustu automatizace, pro kterou je Docker dobrý, aniž by vás to bolelo, když to děláte sami.

Hlavním místem, kde může být Docker užitečný pro databázové zátěže, jsou vývojová prostředí. Docker usnadňuje vytváření nových databází s různou konfigurací, což umožňuje rychlé testování. Ve výrobě jsou však pravidla obecně přísnější.


Docker
  1. Jak spustit Nginx v kontejneru Docker:Průvodce krok za krokem

  2. Jak spustit program uvnitř kontejneru Docker?

  3. Měli byste spustit databázi v Dockeru?

  1. Jak spustit příkaz na spuštěném kontejneru Docker

  2. Úvod do Docker Containers

  3. Spusťte Docker jako uživatel bez oprávnění root

  1. Jak spustit MySQL v kontejneru Docker

  2. Distribuovaná databáze NoSQL Elasticsearch – co to je a měli byste ji používat?

  3. 10 smrtících příkazů, které byste nikdy neměli spouštět na Linuxu