GNU/Linux >> Tutoriels Linux >  >> Linux

Docker peut-il s'exécuter dans un conteneur Linux ?

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 :

  1. 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, essayez lxc.aa_profile = unconfined ) dans le config fichier de votre LXC pour vous assurer qu'il ne sera pas bloqué par apparmor . Pour plus d'informations, visitez (ou modifiez) les fichiers en /etc/apparmor.d/lxc .

  2. Vous devez installer lxc dans votre conteneur. Si vous êtes sous ubuntu par exemple, exécutez dans le conteneur apt-get install lxc .

  3. Assurez-vous que le démon docker est appelé avec le --exec-driver=lxc paramètre. Vous pouvez le tester avant en émettant manuellement docker -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 :

  1. Le drapeau --privileged est nécessaire sur le conteneur extérieur pour y parvenir.
  2. Vous DEVEZ utiliser -v /var/lib/docker pour éviter la limitation mentionnée par creack.
  3. ln -s /usr/bin/docker.io /usr/local/bin/docker crée juste un lien symbolique pour que nous puissions taper docker au lieu de docker.io

Linux
  1. Comment exécuter Nginx dans un conteneur Docker :un guide étape par étape

  2. Comment installer et configurer Docker Container sur Rocky Linux 8

  3. Pouvez-vous exécuter Xcode sous Linux ?

  4. Installation de netstat sur le conteneur docker linux

  5. Environnement Linux isolé léger

Exécutez le conteneur Almalinux ou Rocky Linux 8 Docker avec Systemd (systemctl)

Comment exécuter MySQL dans un conteneur Docker

Comment exécuter PHPMyAdmin dans un conteneur Docker

Comment exécuter Grafana dans un conteneur Docker

Comment exécuter des conteneurs Docker

Impossible de lire le certificat lors de l'exécution dans le conteneur Linux Docker - fonctionne sous Windows