Wie erkennt man, dass ein LXC-Containersystem bereit ist?

741
anumi

Ich versuche, einen LXC-Container zu starten und darin einen Befehl auszuführen. Das Problem ist, dass selbst wenn sich der Container im Status RUNNING befindet, der Bootvorgang noch nicht abgeschlossen ist. Dies führt zu Problemen mit / tmp (und, denke ich, bei anderen Initialisierungen).

Dies kann mit dieser Aufrufsequenz veranschaulicht werden, die einen Container erstellt, ihn startet, auf seinen RUNNING-Status wartet und einige Befehle ausführt. Die Befehle erstellen eine Datei / tmp / hello, zeigen ein Verzeichnis an, warten ein wenig und zeigen erneut das Verzeichnis an:

lxc-clone -B overlayfs -s -o vm -n c1 ; lxc-start -n c1 ; lxc-wait -n c1 -s RUNNING ; lxc-attach -n c1 -- su -c "touch /tmp/hello; ls -la /tmp; sleep 5; ls -la /tmp" slave ; lxc-stop -n c1 ; lxc-destroy -n c1

deren Ausgabe ist

Created container c1 as snapshot of vm total 16 drwxrwxrwt 1 root root 4096 May 24 09:37 . drwxr-xr-x 1 root nogroup 4096 May 24 09:37 .. drwxrwxrwt 2 root root 4096 May 22 21:19 .ICE-unix drwxrwxrwt 2 root root 4096 May 22 21:19 .X11-unix -rw-rw-r-- 1 slave slave 0 May 24 09:37 hello total 16 drwxrwxrwt 1 root root 4096 May 24 09:37 . drwxr-xr-x 1 root nogroup 4096 May 24 09:37 .. drwxrwxrwt 2 root root 4096 May 24 09:37 .ICE-unix drwxrwxrwt 2 root root 4096 May 24 09:37 .X11-unix

und zeigt an, dass die Datei / tmp / hello von einem Initialisierungsskript gelöscht wird.

Wie warten Sie im Container, bis das System vollständig hochgefahren ist? Wie mache ich das auch von außerhalb des Containers?

4

1 Antwort auf die Frage

4
Jarrad

Für einen Container, der auf systemd ausgeführt wird, scheint dies gut zu funktionieren:

lxc-attach -n [CONTAINER NAME] -- systemctl isolate multi-user.target 

Sie können wahrscheinlich dieselbe Logik für einen sysvinitoder einen upstartbasierten Container anwenden (einen Befehl ausführen, der blockiert, bis ein Runlevel erreicht ist), aber ich konnte Ihnen nicht sagen, welche Befehle dies aus meinem Kopf heraus tun können.