GNU/Linux >> Znalost Linux >  >> Linux

Jak správně nakonfigurovat správce v dockeru

Podle oficiální dokumentace:

Může být pouze jeden CMD instrukce v Dockerfile . Pokud uvedete více než jeden CMD pak pouze posledních CMD vstoupí v platnost.

A váš Dockerfile má dva příkazy CMD, takže příkaz php-fpm přepíše

/usr/bin/supervisord

Takže můžete spouštět příkazy PHP, ale nemůžete najít soket správce vytvořený v kontejneru.

Problém můžete vyřešit odstraněním posledních CMD příkaz související s PHP-FPM jak jste již nakonfigurovali dozorce pro jeho spuštění a váš Dockerfile by měl mít jeden CMD příkaz:

CMD ["/usr/bin/supervisord"]

Myšlenkou je odstranit supervizora a místo toho spustit vše, co supervizor spouštěl v několika různých kontejnerech. Můžete to snadno zorganizovat pomocí docker-compose , například všechny běží na stejném kontejneru s různými CMD přepíše nebo stejný kontejner s jiným CMD vrstva na konci, aby se rozdělila. Problém je v tom, že supervizor nebude schopen sdělit stav procesů, které spravuje, Dockeru. Vždy bude „živý“, i když všechny jeho procesy budou zcela zničeny. Přímé vystavení znamená, že uvidíte, že havarovaly.

Nejlepší je rozdělit každou z těchto služeb do samostatných kontejnerů. Vzhledem k tomu, že existují oficiální předpřipravené pro MySQL a tak dále, není opravdu žádný důvod, abyste si je sestavovali sami. Co chcete udělat, je přeložit to supervisord config na docker-compose formát.

Se samostatnými kontejnery můžete dělat věci jako docker ps abyste zjistili, zda vaše služby fungují správně, budou všechny uvedeny jednotlivě. Pokud potřebujete upgradovat jeden, můžete to udělat snadno, stačí pracovat s tímto jedním kontejnerem, místo abyste museli sundávat celou věc.

Způsob, jakým na něj zde útočíte, zachází s Dockerem jako s luxusním virtuálním počítačem, což ve skutečnosti není. Místo toho je to správce procesů , kde tyto procesy náhodou mají předem vytvořené obrazy disků a kolem nich vrstvu zabezpečení.

Sestavte své prostředí z jednoprocesových kontejnerů a váš život bude mnohem jednodušší jak z hlediska údržby, tak z hlediska monitorování.

Pokud můžete tuto konfiguraci vyjádřit jako něco docker-compose můžete zvládnout, pak jste o krok blíže k přechodu na sofistikovanější vrstvu správy, jako je Kubernetes, což může být logickým závěrem této konkrétní migrace.


Linux
  1. Jak nainstalovat a nakonfigurovat docker na Debian 11

  2. Jak nainstalovat Docker na Ubuntu 18.04?

  3. Jak ukončit všechny procesy supervizora, pokud jeden skončil s výsledkem 0

  1. Jak nainstalovat a nakonfigurovat docker v Rocky Linux/Centos 8

  2. Jak opustit kontejner Docker

  3. Jak nakonfigurovat docker pro použití proxy

  1. Výukový program MySQL Docker Container:Jak nastavit a nakonfigurovat

  2. Jak nakonfigurovat Btrfs jako Storage Engine v Dockeru

  3. Jak nakonfigurovat macvtap, aby správně předával multicastový paket?