Oui c'est possible. Cependant, vous ne pouvez pas avoir une partition aufs imbriquée dans aufs. Vous devez monter un autre système ou utiliser un backend de stockage différent.
Vous pouvez jeter un œil au makefile du docker et à hack/dind
. Vous avez besoin du mode privilégié pour le faire.
La façon la plus simple d'essayer est de faire make shell
et une fois dans le conteneur, vous pouvez démarrer un nouveau démon docker :)
EDIT :J'ai essayé Koding et ce n'est effectivement pas possible. Vous n'êtes pas privilégié dans leur conteneur, vous ne pouvez donc pas démarrer un nouveau docker.
Oui, docker peut s'exécuter dans un conteneur Linux.
Mais docker ne fonctionnera qu'avec le lxc
pilote d'exécution et dans un environnement non confiné lxc.
Alors, voici comment obtenir docker dans LXC :
-
Assurez-vous d'avoir
lxc.aa_profile = lxc-container-default-with-nesting
(si cela ne fonctionne pas ou si vous n'avez pas ce profil, essayezlxc.aa_profile = unconfined
) dans leconfig
fichier de votre LXC pour vous assurer qu'il ne sera pas bloqué parapparmor
. Pour plus d'informations, visitez (ou modifiez) les fichiers en/etc/apparmor.d/lxc
. -
Vous devez installer lxc dans votre conteneur. Si vous êtes sous ubuntu par exemple, exécutez dans le conteneur
apt-get install lxc
. -
Assurez-vous que le démon docker est appelé avec le
--exec-driver=lxc
paramètre. Vous pouvez le tester avant en émettant manuellementdocker -d --exec-driver=lxc
. Dans Ubuntu, pour que l'argument soit utilisé au démarrage, modifiez simplement/etc/default/docker
et assurez-vous d'avoir la ligne :
DOCKER_OPTS="--exec-driver=lxc"
Suivez ce fil pour les mises à jour :https://github.com/docker/docker/issues/6783
Si vous avez besoin de dépanner :
- garder un œil sur
apparmor
se connecte aux journaux de crénage de l'hôte. - lancer
docker -d ...
manuellement pour obtenir les résultats.
Remarque :Vous n'aurez peut-être pas la main sur l'hôte pour modifier le script apparmor LXC sur Koding en jugeant les réponses des autres, quoi qu'il en soit, ce guide reste intéressant si vous êtes le fournisseur LXC, et il répond à la question plus générale que vous avez posée dans votre titre de la question et qui pourrait attirer les gens dans des scénarios plus généraux (comme je l'étais).
Et voici un guide complet pour toute autre personne dans le même bateau.
Démarrez un terminal et commencez à taper..
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
Vous devriez maintenant être à l'intérieur d'un conteneur à l'intérieur d'un autre conteneur.
Remarques :
- Le drapeau
--privileged
est nécessaire sur le conteneur extérieur pour y parvenir. - Vous DEVEZ utiliser
-v /var/lib/docker
pour éviter la limitation mentionnée par creack. ln -s /usr/bin/docker.io /usr/local/bin/docker
crée juste un lien symbolique pour que nous puissions taperdocker
au lieu dedocker.io