Jak utworzyć usługę systemd dla kontenera Docker – krok po kroku
Linux

Jak utworzyć usługę systemd dla kontenera Docker – krok po kroku

Jak utworzyć usługę systemd dla kontenera Docker – krok po kroku

Dzięki tej metodzie:
✅ Kontener może być automatycznie uruchamiany po restarcie
✅ Będzie nadzorowany przez systemd (restart, logowanie, status)
✅ Możesz ustawić zależności (np. czekać na sieć)


🧱 Założenia

Masz działający kontener, np. myapp, który chcesz uruchamiać jako usługę.

Kontener może być już utworzony albo chcesz, by systemd go tworzył – obie opcje poniżej.


🛠️ Krok 1: Utwórz plik .service

sudo nano /etc/systemd/system/myapp.service

📄 Przykład: uruchamianie kontenera z systemd

[Unit]
Description=Usługa Docker: MyApp
Requires=docker.service
After=docker.service

[Service]
Restart=always
ExecStart=/usr/bin/docker start -a myapp
ExecStop=/usr/bin/docker stop myapp

[Install]
WantedBy=multi-user.target

🧠 Co to oznacza?

Dyrektywa Opis
Requires Usługa zależy od Dockera
After Uruchom po Dockerze
ExecStart Uruchom kontener (w trybie dołączonym: -a)
ExecStop Zatrzymaj kontener
Restart=always Automatyczny restart po awarii

🐳 Krok 2: Utwórz kontener (jeśli jeszcze nie istnieje)

docker run -d --name myapp -p 8080:80 myimage:latest

📌 Nie używaj --restart=always, bo systemd przejmie restartowanie.


🔄 Krok 3: Załaduj nową usługę

sudo systemctl daemon-reload

🚀 Krok 4: Uruchom i włącz usługę

sudo systemctl start myapp
sudo systemctl enable myapp

✅ Krok 5: Sprawdź status i logi

sudo systemctl status myapp
journalctl -u myapp

🧪 Alternatywa: tworzenie kontenera w ExecStart

Jeśli chcesz, by kontener był tworzony za każdym razem (np. testy/dev):

ExecStart=/usr/bin/docker run --rm --name myapp -p 8080:80 myimage:latest
ExecStop=/usr/bin/docker stop myapp

Ale: ⚠️ Kontener nie może wtedy być już uruchomiony – usługa się nie włączy.

Czytaj  Kwantowe zagrożenia dla Linuxa: Czy szyfrowanie post-kwantowe to jedyna odpowiedź na nowe wyzwania?
Jak utworzyć usługę systemd dla kontenera Docker – krok po kroku
Jak utworzyć usługę systemd dla kontenera Docker – krok po kroku

🛡️ Dobre praktyki

  • Użyj dedykowanego pliku konfiguracyjnego, np. /etc/myapp/env z EnvironmentFile=
  • Stwórz volumeny, by dane kontenera były trwałe
  • Dodaj zależności od sieci, jeśli kontener wymaga połączenia:
After=network-online.target
Wants=network-online.target

🧹 Jak usunąć usługę systemd dla kontenera?

sudo systemctl stop myapp
sudo systemctl disable myapp
sudo rm /etc/systemd/system/myapp.service
sudo systemctl daemon-reload

✅ Podsumowanie

Usługi systemd dla kontenerów Docker to idealne rozwiązanie dla produkcyjnych wdrożeń, w których wymagana jest niezawodność i integracja z systemem operacyjnym.

Dzięki temu możesz:

  • zarządzać kontenerem jak zwykłą usługą
  • uruchamiać go automatycznie
  • łatwo monitorować i restartować

 

Polecane wpisy
Konfiguracja tuneli VPN z wykorzystaniem failover i redundancy
Konfiguracja tuneli VPN z wykorzystaniem failover i redundancy

Konfiguracja tuneli VPN z wykorzystaniem failover i redundancy Współczesne systemy IT wymagają niezawodności i dostępności, zwłaszcza w kontekście połączeń VPN, Czytaj dalej

Linux w Sferze Nauki Danych: Przetwarzanie i Analiza Danych
Linux w Sferze Nauki Danych: Przetwarzanie i Analiza Danych

Nauka danych to dziedzina, która zajmuje się zbieraniem, przetwarzaniem i analizą dużych ilości danych. Dane te mogą pochodzić z różnych 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.