2016-07-17 11 views
2

Wenn ich einen Grund Docker Behälter laufen (aus Google Cloud Shell) wie soGrund Docker Container Berichte unbekannt Runlevel

docker pull debian 
docker run -i -t debian:wheezy /bin/bash 

und dann runlevel am laufenden Containers Shell-Prompt eingeben, ist die Ausführungsebene unknown. Soll ich() bestimmte Pakete installieren, um Support für Runlevels hinzuzufügen? Wenn ja, welche oder was könnte sonst noch falsch sein?

Antwort

2

Docker ist ein Tool zur Anwendungsisolierung, kein Tool zur Betriebssystemvirtualisierung. Runlevel's sind auf Betriebssystemebene, das OS kommt auf, lädt Verzeichnisse und startet Dienste, um einen Runlevel zu erreichen. In einem Container wird Ihre Anwendung gestartet, das Ende. Sie können davon ausgehen, dass der Container auf einer einzelnen Benutzerebene ausgeführt wird, da Sie als einziger Benutzer auf die Umgebung zugreifen, aber das Installieren von Anwendungen spielt keine Rolle.

+0

Ich sehe, sieht aus, als ob ich den gleichen Anfängerfehler gemacht habe wie auch von [hier] (http://stackoverflow.com/questions/27154567/ubuntu-12-04-into-docker-service-mysql-start). Können Sie vielleicht auf einen Artikel verweisen, der den Unterschied zwischen dem Tool zur Anwendungsisolierung und einem Betriebssystemvirtualisierungs-Tool näher erläutert, so dass ich auf systematische Weise lernen kann, was in einem Container anders als ein VM-Image anders sein kann? – Drux

+1

Die Frage zu den [Unterschieden zwischen Docker und VMs] (http://Stackoverflow.com/q/16047306/596285) ist alt, kann aber immer noch hilfreich sein. – BMitch

+0

Ausgezeichnet, thx. – Drux

1

BMitch ist richtig. Docker hat nichts mit Runlevels zu tun, es wird nie einen Runlevel ändern. Aber da ist mehr.

runlevelunknown ist auf einigen Systemen unter systemd üblich. Ihre Frage ist mit Debian getaggt, und Debian Jessie (die neueste Debian-Version, die systemd verwendet, verwendet Kompatibilitätsskript, um einen Runlevel zu drucken). Arch-basierte Distributionen und die unstabilen RedHat-basierten Distributionen (z. B. Fedora) drucken unknown, wenn sie runlevel ausführen, d. H. Sie interessieren sich nicht einmal für das Drucken eines falschen Runlevels.

Wenn Sie Ihr Runlevel Skript überprüfen erhalten Sie die folgende Ausgabe auf einer aktuellen Distribution erhalten:

$ ls -l $(which runlevel) 
lrwxrwxrwx 1 root root 9 Jun 18 14:44 /usr/bin/runlevel -> systemctl 

(dass auf Bogen ist, runlevel in /usr/sbin auf Debian, aber es weist auch auf systemctl auf Debian)

Das Skript runlevel zeigt auf sysemtd Kontrolle auf den neuesten Distributionen.

Im Allgemeinen runlevel hat keine Bedeutung auf den letzten Distributionen (wegen systemd, auf die ziemlich jeder wechselte). Wenn Sie in die Verzeichnisse /etc/rc.d/rc*.d/ schauen, sind sie fast leer.

Was ist eigentlich definiert, wie init Prozesse der Systemstart ist die systemd Standardziel, befindet sich hier:

/lib/systemd/system/default.target 

Oder /etc/systemd/system/default.target, wenn das vorhanden ist.