Ja. Das ist die Grundidee von docker.
Er erstellt einen "statischen Container" in einem chroot-env, der auf jedem Linux-System ausgeführt werden kann, da alle erforderlichen Benutzer-Land-Abhängigkeiten im Image enthalten sind.
Da Linux (der Kernel) eine Rückwärtskompatibilität bei Systemaufrufen und deren Aufrufschemata aufrechterhält, kann die Idee über Versionen und sogar verschiedene Linux-Distributionen hinweg funktionieren.
Natürlich muss die binäre Architektur (etwa amd64) auf dem Quell- und Zielsystem identisch sein.
Ja, für die meisten Anwendungen funktioniert das. Der Kernel ist das, worauf Sie wirklich laufen (RedHat in Ihrem Beispiel), während der Userspace vom Container (Ubuntu) bereitgestellt wird.
Die meisten Linux-Kernel-Varianten sind so ähnlich, dass Anwendungen sie nicht bemerken. Wenn der Code jedoch auf etwas Bestimmtes im Kernel angewiesen ist, das nicht vorhanden ist, kann Docker Ihnen nicht helfen.
Docker selbst basiert auf bestimmten minimalen Kernel-Features, Version 3.8 zum Zeitpunkt des Schreibens. Ссылка
Tags und Links docker