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-nestinghaben (Wenn es nicht funktioniert oder Sie dieses Profil nicht haben, versuchen Sie es mitlxc.aa_profile = unconfined) imconfigDatei Ihres LXC, um sicherzustellen, dass sie nicht durchapparmorblockiert 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 lxcaus . -
Stellen Sie sicher, dass der Docker-Daemon mit
haben--exec-driver=lxcaufgerufen wird Parameter. Sie können es vorher testen, indem Sie manuelldocker -d --exec-driver=lxceingeben . Um in Ubuntu das Argument beim Start zu verwenden, bearbeiten Sie einfach/etc/default/dockerund 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
apparmorim 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
--privilegedwird auf dem Außenbehälter benötigt, um dies zu erreichen. - Sie MÜSSEN
-v /var/lib/dockerverwenden um die von Crack erwähnte Einschränkung zu vermeiden. ln -s /usr/bin/docker.io /usr/local/bin/dockererstellt nur einen symbolischen Link, damit wirdockereingeben können stattdocker.io