Ich möchte Docker in einem aktiven Docker-Container installieren.
%Vor% Mein Basiscontainer verwendet Centos, ich kann mich mit docker exec
im laufenden Container anmelden. Aber wenn ich versuche, docker mit yum install -y docker
zu installieren, wird es installiert.
Aber irgendwie kann ich den Docker-Dienst mit docker -d &
nicht starten, es gibt mir einen Fehler als:
Gibt es eine Möglichkeit, ich kann Docker im Docker-Container installieren oder Bild bereits mit Docker laufen lassen? Ich habe diese Beispiele bereits gesehen, aber keine funktioniert für mich.
Die Ausgabe von uname -r
auf dem Hostcomputer:
Jede Hilfe wäre willkommen.
Vielen Dank im Voraus
Aktualisieren
Dank Ссылка möchte ich einen anderen Ansatz zeigen.
Anstatt die docker
-Binärdatei des Hosts zu mounten, sollten Sie eine containerspezifische Version der docker
-Binärdatei kopieren oder installieren. Da Sie es nur in einem Client-Modus verwenden, müssen Sie es nicht als Systemdienst installieren. Sie müssen den Docker-Socket weiterhin im Container bereitstellen, damit Sie problemlos mit der Docker-Engine des Hosts kommunizieren können.
Angenommen, Sie haben ein Basis-Image mit einer funktionierenden Docker-Binärdatei (z. B. das offizielle Andock-Image ), das Beispiel sieht jetzt so aus:
docker run\
-v /var/run/docker.sock:/var/run/docker.sock\
docker:1.12 docker info
Ohne Ihre Frage wirklich zu beantworten, würde ich vorschlagen, dass Sie Verwenden von Docker-in-Docker für Ihre CI- oder Testumgebung? Denk zweimal nach. .
Es wird erläutert, warum das Ausführen von docker-in-docker durch ein Setup ersetzt werden sollte, bei dem Docker-Container als Geschwister des Containers "outer" oder "base" ausgeführt werden. Der Artikel verlinkt auch zum ursprünglichen Ссылка Projekt, in dem Sie Arbeitsbeispiele zum Ausführen von Docker in Docker finden - falls Sie es trotzdem wollen habe docker-in-docker.
Ein Beispiel, wie ein Container auf den Docker-Dämon des Hosts zugreifen kann, sieht folgendermaßen aus:
%Vor%Wenn Sie auf dem Mac mit der Docker Toolbox arbeiten.
Der folgende Befehl WIRD NICHT FUNKTIONIEREN
%Vor% Weil /var/run/docker.sock
nicht auf Ihrem OSX-Dateisystem ist
Der Docker-Daemon läuft innerhalb der boot2docker
VM - und dort befindet sich der Unix-Socket.
Sie müssen also den Container von boot2docker
VM
Dies sieht aus wie Docker-in-Docker, fühlt sich an wie Docker-in-Docker, ist aber kein Docker-in-Docker. Wenn dieser Container mehr Container erstellt, werden diese Container im Docker der obersten Ebene erstellt / p>
Sie benötigen den Parameter --privileged
.
Docker-Container sind standardmäßig "nicht privilegiert" und können z Führen Sie beispielsweise einen Docker-Daemon in einem Docker-Container aus.
Führen Sie Ihr Basisbild mit dem Befehl docker run --privileged -it centos:centos7 bash
aus. Dann können Sie einen weiteren Docker-Container in diesem Container installieren und ausführen.
Tags und Links docker dockerfile