Docker kapsayıcısı neden Ubuntu 12.04'te önyükleme komut dosyası ile başlatılamıyor?


15

Ubuntu 12.04 ve Docker 0.8.1 çalıştıran Linode VPS'de Docker otomatik başlatma talimatlarını kullanarak , belirtilen kap yeniden başlatıldığında başlamaz.

Bir kez önyükleme yaptıktan sonra

~$ sudo start [service-name]

ve her şey planlandığı gibi gidiyor, ama aynı zamanda bir yeniden başlatmadan sonra yeniden başlatmak için kapsayıcı istiyorum.

Öğreticideki komut dosyası yeniden başlatma işlemlerini gerçekleştirmek için tasarlanmamış mı?

/ etc / default / docker dosyası bir satır içerir:

DOCKER_OPTS="-r=false"

/etc/init/service-name.conf doğrudan docker sayfasından:

description "service description"                                                                                                            
author "me"
start on filesystem and started docker
stop on runlevel [!2345]
respawn
script
    # Wait for docker to finish starting up first.
    FILE=/var/run/docker.sock
    while [ ! -e $FILE ] ; do
        inotifywait -t 2 -e create $(dirname $FILE)
    done
    /usr/bin/docker start -a db5e61a9afa8
end script

2
Uptart betiğinizin içeriği nedir ve /etc/default/docker?
Bruno Pereira

Yanıtlar:


6

Geçtiğimiz birkaç ay boyunca, öğreticideki upstart komut dosyası, liman işçisinin başlamasını beklemek için döngüyü kaldırmak üzere değiştirildi. Döngüyü uptart komut dosyalarından kaldırdım ve kaplarım yeniden başlatıldıktan sonra doğru bir şekilde yeniden başlatılıyor.

/Etc/init/service-name.conf betiğim şimdi şöyle görünüyor:

description "service description"                                                                                                            
author "me"
start on filesystem and started docker
stop on runlevel [!2345]
respawn
script
    /usr/bin/docker start -a db5e61a9afa8
end script

Bu döngüde neyin yanlış olduğundan emin değilim. Belki de varsayılan docker kurulumunda herhangi bir değişiklik yapmama rağmen sistemimdeki yanlış dosyayı işaret ediyordu. Şimdilik, sadece bazı karmaşık geçici çözüm yerine düzeltme kodunu içeren mutluyum.


Docker işini bir sinyal (docker tarafından başlatıldı) yayınlayacak şekilde değiştirmek ve bu sinyalin konteyner işlerinin başlamasını tetiklemesini sağlamak daha hızlı olur.
MikeyB

Komut vererek komutu bu şekilde durduramazsınız stop service-name. Bu sorunla karşı karşıyayım :(
Ahmed Al Hafoudh

3

Ubuntu 14.04 apt-get lezzetini kullanan herkes için. Sadece "docker" değil, "docker" beklemek için başlangıç ​​komut dosyasını değiştirmeniz gerekir:

description "Docker startup script for yum_repo"
author "me"
start on filesystem and started docker.io
stop on runlevel [!2345]
respawn
script
  /usr/local/bin/docker start -a yum_repo_run
end script

1

Ben ev sahibi olarak Ubuntu 13.10 kullanıyorum ve aynı sorunu vardı. Docker'ın docker için bir rc komut dosyası yüklediğini /etc/init.d/dockerve aynı zamanda /etc/init/docker.conf'da bir uptart komut dosyası yüklediğini buldum . Sadece /etc/init.d/dockerbu sorunun ortadan kalkması için rc komut dosyasını kaldırmak zorunda kaldım .

Umarım bu sizin için de işe yarar.


Ne yazık ki, bu benim için çalışmadı.
jody

0
DOCKER_OPTS="-r=false"

Bu şu anlama gelir: Daha önce çalışan kapları yeniden başlatmayın.

-rSeçeneği kaldırın veya true olarak değiştirin.


2
Doğru, ancak nokta, docker arka plan programı değil, uptart handle container yeniden başlatmaları. Docker arka plan programı kapsayıcı yeniden başlatıldığında başlatılırsa, işlem upstart tarafından yönetilemez.
jody

0

/var/run/docker.sockbir soket -Solduğundan varlığı test ederken kullanmanız gerekir :

FILE=/var/run/docker.sock
while [ ! -S $FILE ] ; do
    inotifywait -t 2 -e create $(dirname $FILE)
done
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.