Wie kann Docker auf einem Debian-Host laufen, vielleicht einem OpenSUSE in einem Container? Es verwendet einen anderen Kernel mit getrennten Modulen. Auch ältere Debian-Versionen haben ältere Kernel verwendet, also wie kann es auf einer Kernel-Version 3.10+ laufen? Ältere Kernel haben nur ältere eingebaute Funktionen, wie kann eine alte Distro neue Funktionen verwalten? Was ist "der Trick" drin?Wie kann Docker Distributionen mit verschiedenen Kernel ausführen?
Antwort
Wie kann
vielleicht ein OpenSUSE in einem Container auf einer Debian-Host ausgeführt Docker Da der Kernel das gleiche ist und den Docker Motor läuft all diese Container Bilder unterstützen: der Host-Kernel sein sollte 3,10 oder mehr, aber seine list of system calls ist ziemlich stabil.
Siehe "Architecting Containers: Why Understanding User Space vs. Kernel Space Matters":
- Anwendungen enthalten Business-Logik, sondern verlassen sich auf Systemaufrufe.
- Sobald eine Anwendung kompiliert wurde, wird die Menge der Systemaufrufe, die eine Anwendung verwendet (d. H. Auf sie zurückgreift), in die Binärdatei eingebettet (in höheren Sprachen ist dies der Interpreter oder JVM).
- Containers abstrahieren nicht die Notwendigkeit, dass der Benutzerbereich und der Kernelraum einen gemeinsamen Satz von Systemaufrufen gemeinsam nutzen.
- In einer Containerwelt wird dieser Benutzerbereich gebündelt und an verschiedene Hosts verteilt, von Laptops bis zu Produktionsservern.
- In den kommenden Jahren wird dies zu Herausforderungen führen.
Von Zeit neue Systemaufrufe Zeit hinzugefügt werden, und alte Systemaufrufe sind veraltet; Dies sollte berücksichtigt werden, wenn Sie über den Lebenszyklus Ihrer Containerinfrastruktur und die darin ausgeführten Anwendungen nachdenken.
Siehe auch "Why kernel version doesn't match Ubuntu version in a Docker container?":
Es gibt keinen Kern in einem Container. Selbst wenn Sie einen Kernel installieren, wird er beim Start des Containers nicht geladen. Der eigentliche Zweck eines Containers besteht darin, Prozesse zu isolieren, ohne einen neuen Kernel ausführen zu müssen.
- 1. Wie wird mit verschiedenen Verzeichnisordnern auf verschiedenen Linux-Distributionen verfahren?
- 2. Docker: Mischen von Distributionen - irgendein Nachteil?
- 3. Fehler beim Ausführen von Python-Locust-Skript von zwei verschiedenen Linux-Distributionen
- 4. Travis lokal mit Docker ausführen
- 5. Kombinieren von cloudbees ec2 docker image mit docker in docker
- 6. Wie Spark auf Docker ausführen?
- 7. Ich kann nuttcp nicht in Docker ausführen
- 8. Docker Swarm + Docker Compose: Ausführen von verknüpften Containern auf verschiedenen Knoten?
- 9. Inkonsistenz im Python-Systemattribut "__file__" auf verschiedenen Linux-Distributionen
- 10. Wie kann ich Distributionen manuell mit pkg_resources registrieren?
- 11. Wie Shell-Befehl in Kernel-Programmierung ausführen?
- 12. Ausführen von Docker-Containern mit Jenkins
- 13. windeployqt.exe unter Linux-Distributionen
- 14. Was ist mit einem freigegebenen Kernel in Docker gemeint?
- 15. Docker in einem Docker-Container ausführen?
- 16. jupyter notebook läuft kernel in verschiedenen env
- 17. Wie Docker-Compose auf Remote-Host ausführen?
- 18. Kann travis-ci docker laufen?
- 19. Mehrere Server von einem Docker-Image ausführen
- 20. Erstellen neuer Distributionen in scipy
- 21. Ich kann Docker oder Service-Docker
- 22. Wie Ausführen von Docker mit Benutzer-Namespace aktiviert?
- 23. Docker - Befehle aus allen Containern ausführen
- 24. Warum sagt Docker es nicht ‚bash ausführen kann"?
- 25. Code auf verschiedenen Untergruppen ausführen
- 26. Bash-Skript kann Knoten auf Docker-Image nicht ausführen
- 27. Wie kann ich nach verschiedenen Bedingungen mit verschiedenen Bestellungen sortieren?
- 28. Docker kann hallo-world nicht vom Client ausführen
- 29. MySQL-Container kann keine Initialisierungsskripts in Docker ausführen Compose
- 30. Wie docker Bild mit Docker-komponieren
Ich denke, dass das oben genannte die Frage nicht vollständig beantwortet. Obwohl ich völlig übereinstimme, dass die referenzierten Links eine gute Erklärung dafür liefern, warum die Container keinen eigenen Kernel erzeugen, möchten wir vielleicht einen Container erzeugen, der möglicherweise auf einer bestimmten Kernel-Version beruht. Ich denke, Docker selbst wenn auf einem Linux-Host ausgeführt wird, könnte einen Modus haben, in dem Sie die Kernel-Version auswählen können. – user725408