2013-10-12 8 views
22

Nach this github issue sollte es möglich sein, einen vollen Container mit Upstart, Cron etc. mit Docker 0.6 oder später zu starten, aber wie mache ich das?Starten Sie den vollen Container in Docker?

Ich hatte erwartet, dass

docker run -t -i ubuntu /sbin/init 

würde

lxc-start -n ubuntu /sbin/init 

wie

arbeiten, und ich würde einen Login-Bildschirm bekommen, sondern zeigt es nichts. Ich habe auch versucht, mit ssh darauf zuzugreifen, aber kein Glück. Ich verwende das Standard-Ubuntu-Bild aus dem Docker-Index.

Antwort

21

docker run ubuntu /sbin/init scheint für mich mit 0.6.6 einwandfrei zu funktionieren. Sie erhalten keinen Anmeldebildschirm, da Docker nur den Prozess verwaltet. Stattdessen können Sie docker ps -notrunc verwenden, um die vollständige lxc-Container-ID abzurufen, und dann lxc-attach -n <container_id> run bash in diesem Container als root verwenden. sshd ist nicht im Container installiert, daher können Sie nicht ssh darauf zugreifen.

1

Sie können die ubuntu-Emporkömmling Bild verwenden:

docker run -t -i ubuntu-upstart:14.04 /sbin/init

Obwohl diese Lösung leider veraltet ist, ist es gut genug, wenn Sie einen vollständigen OS Behälter müssen, dass ‚Laufwerke‘ wie eine normale Ubuntu 12.04, 14.04 oder 14.10 (ändern Sie das: 14.04 Bit) System heute. Wenn keine Version angegeben ist, wird 14.04 verwendet. Ich habe es nicht stark benutzt und hatte einige Probleme beim Installieren von komplizierteren Paketen (z.B. dbus!), Aber es könnte für Sie funktionieren.

Alas Ubuntu hat in neueren Versionen auf Systemd umgeschaltet. Googeln zeigt, dass es anscheinend weiterhin Arbeit gibt, um Systemd in einem Andock-Container arbeiten zu lassen, ohne erhöhte Privilegien zu benötigen, aber es scheint nicht ganz bereit für Prime-Time zu sein. Hoffentlich ist es soweit, wenn 16.04 zu LTS wird.

Eine andere Option ist natürlich die Verwendung von phusion/baseimage, aber es hat einen eigenen Ansatz zum Starten von Diensten. Scheint besser geeignet für minimale Multi-Prozess-Container.

+0

Haben Sie eine Verbindung zur Abschreibung dieser Lösung? – brujoand

+1

@brujoand Es ist veraltet in dem Sinne, dass ubuntu zur Verwendung von systemd übergegangen ist, so dass die Arbeit, die getan wird, um in einem Docker-Container Upstart zu machen, für Versionen von ubuntu nach 14.10 nicht nützlich sein wird. – NeilenMarais

+0

Mein aktueller Kunde (zum Zeitpunkt des Schreibens) verwendet 14.04 und scheint keine Pläne für ein Upgrade zu haben, bis der offizielle Support endet, also ist es für mich nicht veraltet! –

Verwandte Themen