Sistem açıldığında docker konteynerlerini otomatik olarak başlatmak için iyi bir yol nedir?
Ubuntu 14.04'te bunun için tercih edilen bir yolu var mı?
Kullandım
supervisord geçmişte otomatik olarak web uygulamalarını başlatmak için. Ama bu Docker için doğru olan şey gibi hissetmiyor.
Görünüşe göre, Docker kapsayıcılarını otomatik başlatmaya yönelik geçerli yöntem (Docker 1.2'den) kullanmaktır politikaları yeniden başlat. Bu, Docker'ın başlangıçta konteynerin başlatılmasını ve çıkışta konteynerin yeniden başlatılmasının nasıl yönetileceğini kontrol edecektir. Şimdiye kadar 'her zaman' seçeneğini kullandım ve Docker'ın sistemi önyükleme sırasında otomatik olarak başlattığını onaylayabilir:
sudo docker run --restart=always -d myimage
Belgeler Alıntı
Politikaları Yeniden Başlatın Docker'daki --restart işaretini kullanarak şunları yapabilirsiniz
Bir konteynerin nasıl olması gerektiği veya olmaması gerektiği için bir yeniden başlatma politikası belirtin
çıkışta yeniden başlatıldı.
hayır - Çıkarken kabı tekrar çalıştırmayın.
on-failure - Kapsayıcıyı yalnızca sıfır olmayan bir şekilde çıkarsa yeniden başlat
çıkış durumu.
her zaman - Çıkış durumundan bağımsız olarak kabı her zaman yeniden başlatın.
Ayrıca, Docker'ın deneyeceği maksimum süreyi de belirleyebilirsiniz.
başarısızlık ilkesini kullanırken kapsayıcıyı yeniden başlatın. Varsayılan
Docker, kabı yeniden başlatmayı sonsuza kadar deneyecek.
$ sudo docker run --restart=always redis
Bu redis'i çalıştıracak
her zaman bir yeniden başlatma politikası ile konteyner, böylece konteyner
Çıkışlar, Docker yeniden başlatır.
$ sudo docker run --restart=on-failure:10 redis
Bu koşacak
Hata durumunda yeniden başlatma ilkesi ve maksimum bir redis konteyneri
Yeniden başlatma sayısı 10. Redis konteyner sıfır olmayan bir çıkış ile çıkarsa
Bir satırda 10 kattan fazla durum Docker, yeniden başlatmayı denemeye son verecek
konteyner Maksimum yeniden başlatma sınırı sağlamak sadece
başarısızlık ilkesi.
Docker'ın bu sayfa Bu, upstart ve systemd ile nasıl yapılacağını açıklar. Docker için doğru olan gibi görünmediğine katılıyorum. Çözümleri çalıştırmaktır
docker startBu, kapsayıcınızı zaten oluşturduğunuzu varsayar. Yapacağını düşünürdüm
docker run --rm son komut dosyasında (bunu yepyeni bir işlem gibi işleme alıp bir görüntüden kapsayıcı) ya da yalnızca docker arka planının önyükleme sırasında kapsayıcıları yeniden başlatmasına izin verin (eğer başka bir şey yapmazsanız varsayılan olarak). Upstart, işlemlerin kolay başlatılmasına / durdurulmasına izin verme avantajına sahiptir, ancak bunu tersanenin başlangıç / durdurma ile de elde edersiniz!
Bence, kullanıcı komut dosyasını çalıştırabilmeden önce bir kapsayıcıyı (tüm doğru bağlantı noktası / cilt bağlamaları ile) el ile oluşturmaya zorlamak bence garip.
Ama bu Docker için doğru olan şey gibi hissetmiyor.
Neden olmasın?
Bunun için süpervizörü büyük bir başarı ile kullanıyorum.
Bildiklerinizi kullanın, neyin işe yaradığını kullanın, kolayca idare edebileceğiniz ve anlayabileceğiniz bir şey kullanın.