2015-01-20 37 views
7

Próbuję uruchomić system w oknie dokowanym, który ma wiele usług inicjowania i uruchamiania i pojawia się ten błąd.Uruchamianie usług (upstart/init.d) w kontenerze

initctl: Unable to connect to Upstart: 
Failed to connect to socket /com/ubuntu/upstart: Connection refused 

Wszystkie obejścia sugerują dokonywania twardy link do/bin/true, aby wyciszyć błąd. Ale muszę mieć te usługi zarządzane przez nowicjusza dla ponownego uruchomienia - zdolność i dla upstart emitować zdarzenia do pracy ...

Jak się wydaje, że docker tego nie obsługuje, rozważam poważny hack pisania skryptu do uruchomienia wszystkie usługi w /etc/rcX.d i śledzić PIDs. To nie rozwiązuje problemu braku emisji z upstart.

Jakieś inne pomysły dotyczące uruchamiania procesów w docku?

+1

Filozofia dokowanym jest uruchomienie procesu, jeśli chcesz uruchomić kilka, przyjrzeć się przełożonym https://docs.docker.com/articles/using_supervisord/ – user2915097

+0

przełożony wydaje głównie równoważne, jeśli nie podzbiór, od początku, ale dzięki za wskaźnik; być może będzie musiał. Biorąc pod uwagę duży, starszy system skryptów startowych, nie jest idealnym rozwiązaniem, aby je przekonwertować i nie można ich użyć jako osobnych dokerów. –

Odpowiedz

3

Powinieneś być w stanie to zrobić. To naprawdę nie jest droga "Docker Way", ale jest to bardzo możliwe. Możesz po prostu rozważyć użycie podstawowego obrazu phusion/baseimage, ma on wbudowaną obsługę runit. Jeśli wolisz używać upstart, po prostu spójrz, w jaki sposób zaimplementowano punkt wejścia, /sbin/myinit i wykonaj to.

11

Niestety, upstart nie działa wewnątrz kontenera dokera, ponieważ działa on trochę magicznie w systemie init.

Ten issue wyjaśnia:

Jeśli aplikacja korzysta dorobkiewicz, to przyzwyczajenie dobrze pasować nagich zdjęć Döcker, a nawet więcej, jeśli odwrócić/sbin/init lub /sbin/initctl coś jak/bin/true lub/dev/null. Twoja aplikacja może użyć usługi, aby uruchomić, jeśli ma ona old school systemV initscript i jeśli polecenie initctl nie zostało zmienione na .

W przypadku solanckich ubuntu, w opakowaniu zastosowano upstart i brak klasycznego skryptu startowego, więc normalne jest, że nie będzie on uruchamiany w obu przypadkach w .

I this one mówi:

Ponieważ Docker zastępuje default/sbin/init z własnym, nie żaden sposób uruchomić dorobkiewicz init wewnątrz kontenera Docker.