Jetzt hatte ich also die Zeit, die Sandbox-VM zu analysieren und für andere Benutzer aufzuschreiben. Wie Sie in Ihrer Bearbeitung der Frage richtig angegeben haben, ist es das Docker-Container-Setup der Sandbox, das mit zwei separaten Root-Benutzern verwechselt wird:
-
über
ssh [email protected] -p 2222
Sie gelangen in den Docker-Container namens "Sandbox". Dies ist eine CentOS-Version 6.8 (Final), die alle HDP-Dienste enthält, insbesondere den Ambari-Dienst. Die Konfiguration erzwingt eine Passwortänderung bei der ersten Anmeldung für den Root-Benutzer. Innerhalb dieser VM können Sie auchambari-admin-password-reset
ausführen und legen Sie dort ein Passwort für den Ambari-Admin fest. -
über Konsole Zugriff erreichen Sie den Docker-Host, auf dem Centos 7.2 ausgeführt wird. Hier können Sie sich mit dem Standard-Root-Passwort für die VM anmelden, wie es in den HDP-Dokumenten zu finden ist.
Kommen wir zu Ihrer Unterfrage mit dem hängenden Docker-Exec, es scheint ein Fehler in dieser speziellen Docker-Version zu sein. Wenn Sie das googeln, werden Sie Probleme finden, die dieses oder ähnliche Probleme mit Docker diskutieren. Daher dachte ich, dass es eine gute Idee wäre, den Host einfach über yum update
zu aktualisieren . Dies stellte sich jedoch als schwieriger Weg heraus.
yum hat versucht, den Kernel zu aktualisieren, hat sich aber darüber beschwert, dass auf der Boot-Partition nicht genügend Speicherplatz vorhanden ist.
Also habe ich die Boot-Partition auf die Root-Partition verschoben:
- Bearbeiten Sie /etc/fsab und kommentieren Sie den Boot-Eintrag aus
- unmounten /booten
- mv /boot
- cp -a /boot.org /boot
- grub2-mkconfig -o /boot/grub2/grub.cfg
- grub2-install /dev/sda
- Neustart
Danach habe ich festgestellt, dass die Docker-Konfiguration kaputt ist und Docker nicht mehr startet. In den Protokollen beschwerte es sich über
"Fehler beim Starten des Daemons:Fehler beim Initialisieren des Grafiktreibers:\"/var/lib/docker\" enthält andere Grafiktreiber:Devicemapper; Bitte bereinigen oder Speichertreiber explizit auswählen (-s )"
Also habe ich /etc/systemd/system/multi-user.target.wants/docker.service bearbeitet und die ExecStart-Einstellung geändert in:
ExecStart=/usr/bin/dockerd --storage-driver=overlay
Nach service docker start
und ein docker start sandbox
. Der Container funktionierte wieder und ich konnte mich am Container anmelden und nach einem Neustart des Ambari-Servers funktionierte alles wieder.
Und jetzt - mit der neuen Docker-Version 1.12.2, docker exec sandbox ls
funktioniert wieder.
Zusammenfassend lässt sich also sagen, dass der Befehl docker exec einen Fehler in dieser bestimmten Version der Sandbox hat, aber Sie sollten es sich zweimal überlegen, ob Sie Ihre Sandbox aktualisieren möchten.