Jak uruchamiać usługi lub kontenery tylko gdy host jest dostępny – systemd + ping + docker
Linux

Jak uruchamiać usługi lub kontenery tylko gdy host jest dostępny – systemd + ping + docker

🕹️ Jak uruchamiać usługi lub kontenery tylko gdy host jest dostępny – systemd + ping + docker

Czasami chcemy, aby konkretna usługa (np. kontener Docker, backup, rsync lub mount NFS) startowała dopiero wtedy, gdy zdalny host (np. serwer, NAS, baza danych) odpowiada. W Linuksie możemy to osiągnąć przy pomocy systemd i prostego skryptu z ping.

Ten mechanizm:

  • zapobiega błędom uruchomienia zależnych usług,
  • zmniejsza liczbę restartów kontenerów i logów błędów,
  • pozwala na warunkowe uruchamianie usług tylko przy dostępności sieci.

🎯 Przykład celu:

Uruchom kontener Dockera db-backup tylko, gdy host 192.168.1.10 (serwer z bazą) odpowiada na ping.

Jak uruchamiać usługi lub kontenery tylko gdy host jest dostępny – systemd + ping + docker
Jak uruchamiać usługi lub kontenery tylko gdy host jest dostępny – systemd + ping + docker

🧾 Krok 1: Skrypt sprawdzający hosta

Utwórz skrypt, który pinguje host i uruchamia usługę tylko gdy host jest dostępny:

sudo nano /usr/local/bin/hostcheck.sh

Zawartość:

#!/bin/bash

TARGET="192.168.1.10"
COUNT=3

if ping -c $COUNT -W 2 $TARGET > /dev/null; then
    docker start db-backup
else
    echo "$(date): $TARGET niedostępny, pomijam uruchomienie kontenera"
fi

Ustaw prawa:

chmod +x /usr/local/bin/hostcheck.sh

🔧 Krok 2: Usługa systemd

Utwórz jednostkę .service, która będzie oparta na tym skrypcie:

sudo nano /etc/systemd/system/db-backup-check.service

Zawartość:

[Unit]
Description=Sprawdzenie hosta i uruchomienie kontenera db-backup
After=network-online.target
Wants=network-online.target

[Service]
Type=oneshot
ExecStart=/usr/local/bin/hostcheck.sh

[Install]
WantedBy=multi-user.target

🔁 Krok 3: Automatyczne uruchamianie po starcie systemu

sudo systemctl daemon-reexec
sudo systemctl daemon-reload
sudo systemctl enable db-backup-check.service

Możesz uruchomić ręcznie:

sudo systemctl start db-backup-check

🔄 Alternatywa: automatyczne próby co X minut – systemd.timer

Stwórz plik timera:

sudo nano /etc/systemd/system/db-backup-check.timer

Zawartość:

[Unit]
Description=Co 10 minut sprawdzaj dostępność hosta

[Timer]
OnBootSec=1min
OnUnitActiveSec=10min
Unit=db-backup-check.service

[Install]
WantedBy=timers.target

Aktywuj:

sudo systemctl enable --now db-backup-check.timer

🛠️ Możliwe rozszerzenia

  • mount zasobu NFS tylko, gdy serwer jest dostępny
  • rsync danych z hosta tylko przy połączeniu
  • uruchamianie backupu do lokalizacji sieciowej
  • startowanie LXC/Docker/Podman po warunku ping
  • integracja z monit lub fail2ban
Czytaj  Jak zainstalować Ubuntu?

🔒 Bezpieczeństwo

  • Używaj ping -c z ograniczoną liczbą prób
  • Ogranicz dostęp do skryptu tylko dla root/admin
  • Możesz dodać logowanie do systemd journal

✅ Podsumowanie

Taka konfiguracja:
✔️ pozwala na warunkowe uruchamianie usług,
✔️ poprawia stabilność systemu,
✔️ eliminuje błędy wynikające z braku dostępności hostów,
✔️ jest bardzo elastyczna i łatwa do rozbudowy.

 

Polecane wpisy
Jak stworzyć własny serwer do wideokonferencji za pomocą Jitsi Meet na Ubuntu
Jak stworzyć własny serwer do wideokonferencji za pomocą Jitsi Meet na Ubuntu

Jak stworzyć własny serwer do wideokonferencji za pomocą Jitsi Meet na Ubuntu? Wideokonferencje stały się nieodłącznym elementem codziennej pracy, nauki Czytaj dalej

Linux w Twórczości Multimedialnej: Edycja Grafiki, Audio i Wideo
Linux w Twórczości Multimedialnej: Edycja Grafiki, Audio i Wideo

Linux to system operacyjny, który jest coraz częściej wykorzystywany w twórczości multimedialnej. Ma wiele zalet, które czynią go idealnym rozwiązaniem Czytaj dalej

Marek "Netbe" Lampart Inżynier informatyki Marek Lampart to doświadczony inżynier informatyki z ponad 25-letnim stażem w zawodzie. Specjalizuje się w systemach Windows i Linux, bezpieczeństwie IT, cyberbezpieczeństwie, administracji serwerami oraz diagnostyce i optymalizacji systemów. Na netbe.pl publikuje praktyczne poradniki, analizy i instrukcje krok po kroku, pomagając administratorom, specjalistom IT oraz zaawansowanym użytkownikom rozwiązywać realne problemy techniczne.