Ja, es ist möglich. Sie können jedoch keine aufs-Partition in aufs verschachteln. Sie müssen ein anderes System mounten oder ein anderes Speicher-Backend verwenden.
Sie können sich das Makefile des Dockers und hack/dind
ansehen . Dazu benötigen Sie den privilegierten Modus.
Am einfachsten versuchen Sie es mit make shell
und sobald Sie sich im Container befinden, können Sie einen neuen Docker-Daemon starten :)
EDIT:Ich habe Koding ausprobiert und es ist tatsächlich nicht möglich. Sie sind in ihrem Container nicht privilegiert, sodass Sie keinen neuen Docker starten können.
Ja, Docker kann in einem Linux-Container ausgeführt werden.
Aber Docker läuft nur mit dem lxc
Ausführungstreiber und in einem unconfined lxc.
So erhalten Sie Docker in LXC:
-
Stellen Sie sicher, dass Sie
lxc.aa_profile = lxc-container-default-with-nesting
haben (Wenn es nicht funktioniert oder Sie dieses Profil nicht haben, versuchen Sie es mitlxc.aa_profile = unconfined
) imconfig
Datei Ihres LXC, um sicherzustellen, dass sie nicht durchapparmor
blockiert wird . Für weitere Informationen besuchen (oder ändern) Sie die Dateien in/etc/apparmor.d/lxc
. -
Sie müssen lxc in Ihrem Container installieren. Wenn Sie beispielsweise unter Ubuntu arbeiten, führen Sie den Container
apt-get install lxc
aus . -
Stellen Sie sicher, dass der Docker-Daemon mit
haben--exec-driver=lxc
aufgerufen wird Parameter. Sie können es vorher testen, indem Sie manuelldocker -d --exec-driver=lxc
eingeben . Um in Ubuntu das Argument beim Start zu verwenden, bearbeiten Sie einfach/etc/default/docker
und vergewissern Sie sich, dass Sie die Zeile:
DOCKER_OPTS="--exec-driver=lxc"
Folgen Sie diesem Thread für Updates:https://github.com/docker/docker/issues/6783
Wenn Sie Fehler beheben müssen:
- Behalten Sie
apparmor
im Auge logs in den Kernlogs des Hosts. - starte
docker -d ...
manuell, um Ausgaben zu erhalten.
Hinweis:Sie haben möglicherweise keine Hand auf dem Host, um das LXC-Apparmor-Skript auf Koding zu ändern, indem Sie die Antworten anderer beurteilen. Trotzdem bleibt dieses Howto von Interesse, wenn Sie der LXC-Anbieter sind, und es beantwortet die allgemeinere Frage, die Sie in Ihrem gestellt haben Fragetitel und das könnte Leute in allgemeineren Szenarien anziehen (so wie ich).
Und hier ist eine vollständige Anleitung für alle anderen im selben Boot.
Starten Sie ein Terminal und beginnen Sie mit der Eingabe von..
docker run -i -t --privileged -v /var/lib/docker ubuntu bash
apt-get update && apt-get install -y docker.io
service docker.io start
ln -s /usr/bin/docker.io /usr/local/bin/docker
docker run -i -t ubuntu bash
Jetzt sollten Sie sich in einem Container in einem anderen Container befinden.
Bemerkungen:
- Das Flag
--privileged
wird auf dem Außenbehälter benötigt, um dies zu erreichen. - Sie MÜSSEN
-v /var/lib/docker
verwenden um die von Crack erwähnte Einschränkung zu vermeiden. ln -s /usr/bin/docker.io /usr/local/bin/docker
erstellt nur einen symbolischen Link, damit wirdocker
eingeben können stattdocker.io