Docker konteyneri yanıt vermeyi durdurduğunda otomatik olarak nasıl yeniden başlatılır?

Son güncelleme: 02/07/2026

  • Docker'ın yerleşik yeniden başlatma politikalarını kullanarak sistem arızalarını giderme.
  • Sağlıksız durumdaki konteynerler için özel komut dosyalarının ve cron'un uygulanması.
  • Başlatma ve kapatma sırasını kontrol etmek için systemd ile gelişmiş entegrasyon.
  • Podman Quadlet gibi harici izleme alternatifleri ve araçları.
Docker konteyneri yanıt vermeyi durdurduğunda otomatik olarak nasıl yeniden başlatılır?

Eminim bu sizin de başınıza gelmiştir: bir servis çalışıyor... Liman işçisi Bu durum, gizemli nedenlerle, birkaç günde bir takılıp kalıyor. Docker konteyneri yanıt vermeyi durdurduğunda otomatik olarak nasıl yeniden başlatılır? Kod veya yapılandırmaları optimize etmeye çalışıp hiçbir şeyin işe yaramadığını görmek, ardından basit bir manuel yeniden başlatmanın sorunu çözdüğünü ve her şeyin bir hafta daha çalışmaya devam ettiğini fark etmek oldukça sinir bozucu. Sürekli saati kontrol etmek yerine, ideal çözüm bu zahmetli işi sizin için yapan bir sistem kurmaktır.

Konteynerlerin kullanılabilirliğini yönetmek, sunucu açıldığında otomatik olarak başlamalarını sağlamaktan daha fazlasını içerir. doğru yanıt vermelerini sağlayın. İsteklere yanıt olarak bazen konteyner Docker için "canlı" görünse de içindeki uygulama yanıt vermez; bu da bizi temel daemon parametrelerinden işletim sisteminde karmaşık servisler oluşturmaya kadar çeşitli çözümler aramaya zorlar.

Docker'ın yerel yeniden başlatma politikaları

Bir Docker konteynerini otomatik olarak yeniden başlatmanın en basit yolu, bayrağı kullanmaktır. --restart Bir konteyner başlatırken veya komutu kullanırken docker update Eğer konteyner zaten oluşturulmuşsa, Docker ihtiyaçlarınıza bağlı olarak çeşitli seçenekler sunar. Örneğin, politika Her zaman Bu durum, işlemin bir hatayla sonlanıp sonlanmadığına veya Docker daemon'unun kendisinin yeniden başlatılıp başlatılmadığına bakılmaksızın, konteynerin her zaman yeniden başlatılmasına neden olacaktır.

Özel içerik - Buraya Tıklayın  Google Translate'te bir metni nasıl çevirebilirim?

Daha cerrahi bir yöntem tercih ediyorsanız, durdurulmadığı sürece Bu, birçok kişi için en iyi seçimdir. Bu yapılandırma, bir öncekiyle aynıdır, tek farkı konteyneri bakım için manuel olarak durdurmanız durumunda ortaya çıkan farklılıktır. Docker bunu açmaya çalışmayacak. Sunucu yeniden başlatıldıktan sonra, manuel kararınıza saygı duyarak otomatik olarak çalışır.

Sadece kritik başarısızlıklara yanıt olarak harekete geçmek isteyenler için, arıza durumundaBu politika, yalnızca kapsayıcı sıfır olmayan bir çıkış koduyla sonlandığında yeniden başlatmayı tetikler. Hatta maksimum yeniden deneme sayısı ekleyerek bunu sınırlayabilir ve hatanın kalıcı ve kritik olması durumunda sistemin sonsuz bir yeniden başlatma döngüsüne girmesini engelleyebilirsiniz.

Docker konteyneri yanıt vermeyi durdurduğunda otomatik olarak nasıl yeniden başlatılır?
Docker konteyneri yanıt vermeyi durdurduğunda otomatik olarak nasıl yeniden başlatılır?

"Sağlıksız" konteynerler için otomasyon

İşte işler burada ilginçleşiyor. Bazen bir konteyner hala "Çalışıyor" (açık) olarak görünse de sağlık durumu farklıdır. sağlıksız Çünkü iç kontrollerden geçemiyor. Önceki politikalar burada etkisiz kalıyor, çünkü süreç teknik olarak ölü değil. Bunu çözmek için yönergeyi uygulayabiliriz. SAĞLIK KONTROLÜ Dockerfile veya Docker Compose dosyasında bir komut tanımlamak (örneğin bir curl Uygulamanın yanıt verip vermediğini doğrulamak için (belirli bir porta) bağlantı kurun.

Sağlık kontrolünü ayarladıktan sonra, bir tane oluşturabiliriz. Bash betiği her birkaç dakikada bir çalışan crontab Linux'tan. Bu betik, belirli bir durumda olan konteynerleri filtrelemelidir. unhealthy veya 128 hata koduyla çıkış yapan ve bir işlem çalıştıranlar docker restart Onlar hakkında.

Özel içerik - Buraya Tıklayın  CD kullanmadan yazıcı nasıl kurulur?

Bunun sorunsuz çalışması ve bir Docker konteynerinin otomatik olarak yeniden başlatılması için, cron işini çalıştıran kullanıcının gerekli izinlere sahip olması şarttır. Docker grubunda gerekli izinlerBu sayede sistem, ortamı her 5 veya 10 dakikada bir izler ve "zombi" durumuna geçen tüm hizmetleri devreye alarak insan müdahalesi olmadan neredeyse tam kullanılabilirlik sağlar.

Windows 10'da liman işçisi
İlgili makale:
Docker'ı Windows 10'a nasıl yükleyebilirim?

systemd ile gelişmiş entegrasyon

Daha profesyonel ortamlarda çalışırken, konteynerlerinizin şu şekilde davranmasını isteyebilirsiniz: yerel Linux hizmetleriEntegre et Liman işçisi Systemd, veritabanının web uygulamasından önce başlamasını sağlamak gibi karmaşık bağımlılıkları yönetmenize olanak tanır. Bu, dosyalar oluşturularak gerçekleştirilir. .service rotada /etc/systemd/system/.

Biz tasarlayabiliriz kapatma ve açma sırası Kontrollü. systemd'ye bağlı özel komut dosyaları kullanılarak, veri bozulmasını önlemek için konteynerleri bağımlılıklarının ters sırasına göre durdurmak mümkündür. Türü kullanarak oneshot ve yapılandırmak targets uygun (örneğin) multi-user.target o shutdown.targetSunucu, konteynerin tüm yaşam döngüsünü yönetir.

Bir Docker konteynerinin yanıt vermeyi durdurduğunda otomatik olarak yeniden başlatılması için bir diğer güçlü seçenek de bayrağı kullanmaktır. --rm systemd ile birlikte kullanıldığında, konteynerin durdurulması üzerine kaldırılması ve başlatma sırasında temel imajdan yeni bir konteyner oluşturulması sağlanır; bu da şunları garanti eder: Kabın her zaman temiz ve değiştirilmemiş olması gerekir.Veri kalıcılığını tamamen harici depolama birimlerine devretmek.

Özel içerik - Buraya Tıklayın  Bir programı kaldıramıyorum.
WSL ile Docker Desktop'ı kullanın.
Docker konteyneri yanıt vermeyi durdurduğunda otomatik olarak nasıl yeniden başlatılır?

Harici araçlar ve modern alternatifler

Bash betikleri yazmakla uğraşmak istemiyorsanız, üçüncü taraf araçlar mevcuttur. Özellikle konteynerleri yeniden başlatmak için tasarlanmış açık kaynaklı uygulamalar bulunmaktadır. belirlenmiş programBu, SSL sertifikalarını yenilemek gibi tekrarlayan görevler için çok kullanışlıdır. Benzer şekilde, aşağıdaki gibi araçlar da işe yarar: Uptime Kuma Bu araçlar, görsel bir kontrol panelinden hizmetlerin durumunu izlemenize ve bir sorun oluştuğunda Telegram veya Gotify'a bildirim göndermenize olanak tanır. Ayrıca, bir Docker konteynerinin yanıt vermeyi durdurduğunda otomatik olarak yeniden başlatılması için de oldukça faydalıdırlar.

Daha hafif veya yerel bir alternatif arayanlar için, Podman Mükemmel bir seçenek. Arka planda çalışan servislerden bağımsız mimarisi ve işlevselliği sayesinde... DörtlüBu sayede, systemd'nin otomatik olarak optimize edilmiş hizmetlere dönüştürdüğü basit bildirimsel dosyalar oluşturabilirsiniz; bu da geleneksel Docker'a kıyasla çok daha organik bir entegrasyon sağlar.

Hizmetlerinizin yaşam döngüsü üzerinde tam kontrol sahibi olmak, aşağıdakilerin birleştirilmesini gerektirir: yeniden başlatma politikaları, sürekli gözetim yoluyla sağlık kontrolleri ve daha karmaşık durumlarda, desteği systemd veya izleme araçları Böylece altyapınız sağlam olur ve birinin her hafta sunucuyu manuel olarak yeniden başlatmayı hatırlamasına bağlı kalmaz.