Was ist der Unterschied zwischen docker:latest und docker:dind?

王林
Freigeben: 2020-10-20 17:31:55
nach vorne
4633 Leute haben es durchsucht

Was ist der Unterschied zwischen docker:latest und docker:dind?

Hintergrund:

Beim Schreiben von CI deklarieren wir das Bild als Ausführungsumgebung des Jobs und jeder Job wird in einem reinen Container ausgeführt.

Manchmal benötigen wir eine Docker-Containerumgebung, um Docker-Build, Docker-Push und andere Vorgänge auszuführen. Wenn wir uns das offizielle Docker-Image ansehen, stellen wir fest, dass es zwei Hauptversionen gibt: docker:latest, docker:dind und docker:git.

(Empfohlenes Tutorial: Docker-Tutorial)

docker:dind

Dieses Bild enthält den Docker-Client (Befehlszeilentool) und den Docker-Daemon.

Über den Docker-Verlaufsbefehl docker:dind haben wir festgestellt, dass docker:dind den Docker-Daemon auf Basis von docker:latest installiert hat und die letzten beiden Build-Befehle lauten:

IMAGE               CREATED             CREATED BY                                      SIZE                COMMENT
66dc2d45749a        8 weeks ago         /bin/sh -c #(nop)  CMD []                       0B                  
<missing>           8 weeks ago         /bin/sh -c #(nop)  ENTRYPOINT ["dockerd-entr…   0B                  
...
Nach dem Login kopieren

Beim Ausführen des Images kann der CMD-Parameter sh nicht verwendet werden angegeben werden. Der Befehl dockerd-entrypoint.sh startet den Docker-Daemon nicht, wenn dieser Parameter empfangen wird. Um den Docker-Daemon korrekt im Container zu starten und den Container zu betreten, müssen Sie Schritt für Schritt vorgehen:

$ docker run -d --name dind --privileged docker:dind # 启动容器
$ docker logs -f dind # 查看启动日志
$ docker exec -it dind sh # 进入容器
Nach dem Login kopieren

Beim Starten des Docker:dind-Containers muss der Parameter --privileged hinzugefügt werden, sonst meldet der Docker-Daemon einen Fehler beim Starten.

docker:latest

Dieses Image enthält nur den Docker-Client und erfordert Docker-Daemon-Unterstützung. Sie können docker:dind verwenden oder /var/run/docker.sock des Hosts mounten.

Für den Start dieses Bildes ist der Parameter --privileged nicht erforderlich.

Über den Docker-Verlaufsbefehl docker:latest wird festgestellt, dass der CMD-Standard sh:

81f5749c9058        3 months ago        /bin/sh -c #(nop)  CMD ["sh"]                   0B                  
<missing>           3 months ago        /bin/sh -c #(nop)  ENTRYPOINT ["docker-entry…   0B                  
...
Nach dem Login kopieren
ist. Startmethode eins: Host-Sock-Datei mounten und docker:latest Geben Sie dasselbe Netzwerk ein und geben Sie den Alias ​​des Dind-Containers im Netzwerk als Docker an, da der im neuesten Container festgelegte Standard-Daemon-Host Docker heißt.

Außerdem müssen Sie auf das Zertifikatproblem achten. Die neue Version des Docker-Clients erfordert ein TLS-Zertifikat für die Kommunikation mit dem Docker-Daemon, um die Kommunikationssicherheit zu gewährleisten. Der Docker:dind-Container generiert das Zertifikat für das von angegebene Verzeichnis Die Umgebungsvariable DOCKER_TLS_CERTDIR Das Zertifikat muss gemountet und bereitgestellt werden docker:latest Container werden verwendet.

$ docker run -it --rm -v /var/run/docker.sock:/var/run/docker.sock docker:latest
Nach dem Login kopieren
docker:git

docker:git ist docker:latest, das den Befehl git enthält, der für die Verwendung von Git in CI praktisch ist.

Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen docker:latest und docker:dind?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:juejin.im
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage