Docker Container und Kompatibilität zu Host OS

jb_alvarado

Lieutenant
Registriert
Sep. 2015
Beiträge
596
Hallo Leute,
ich habe noch nie gelesen, dass das Container OS mit dem Host OS übereinstimmen muss, aber Microsoft schreibt das explizit als Anforderung zu ihren Linux-basierten Containern MS SQL:

  • The SQL Server container OS must match the container host OS in terms of distribution and major version.
Quelle: https://support.microsoft.com/en-us/help/4047326/support-policy-for-microsoft-sql-server

Klar das ich für einen Linux Container auch immer ein Linux Host brauche, aber bis jetzt dachte ich immer, dass die Distribution nebensächlich sei.

Kennt ihr einen technischen Grund, warum das MS voraussetzt? Oder wollen die quasi nur so Support anbieten, ohne triftigen Grund?

Ich frage das weil ich bei einem MS SQL Container (hat nichts mit der Geschichte aus meinem anderen Beirtrag zu tun) stellenweise Performanceprobleme habe und sich da das OS unterscheidet.
Fände es etwas befremden dafür ein Ubuntu 16.04 installieren zu müssen, nur damit ich einen MS Container ausführen kann...
 
Ich bin mir jetzt nicht sicher, aber das Dokument heißt "Support Policy". Hört sich für mich so an, als würde es um Voraussetzungen gehen, unter denen MS den Support garantieren kann.
E: Ich hätte deinen Beitrag auch mal zu Ende lesen sollen^^ Das hast du ja schon selbst erkannt. Was MS halt versucht ist die Anzahl der Variablen zu reduzieren. Und das Host- und Container-OS ist halt eine (ziemlich große).
 
  • Gefällt mir
Reaktionen: KitKat::new()
Container gibt es schon zig Jahre bzw. die zugrunde liegende Technologie. OpenVZ oder LXC sind ähnliche Lösungen und alle haben gemeinsam, dass die laufenden Container und der Host sich den Kernel und dessen Features teilen. Daher sind Container ja so "klein" weil diese im Gegensatz zu einer einzelnen VM keinen eigenen Kernel etc. mitbringen müssen.
Wenn man jetzt wild Host OS und Guest "OS" mischt kann man nur generische APIs und Features verwenden. Kernel ändern sich, alte Zöpfe werden abgeschnitten, neue kommen hinzu. Okay ist jetzt etwas überspitzter und vielleicht dramatischer dargestellt als es ist aber so ist es.
@burglar225 hat es ja auch bereits auf den Punkt gebracht. Es mag auf "gemischten" Umgebungen funktionieren aber Support seitens MS wirst du so nie bekommen und bist bei irgendwelchen Problemen auf dich gestellt.
Es gibt hunderte(!) verschiedene Linux Distributionen, erwartest du ernsthaft, dass MS da alle irgendwie unterstützt? Vor allem kann der Fehler dann in vielen Fällen eben nicht bei MS liegen sondern bei den jeweiligen Distributionen.
 
@snaxilian, das mit den hunderten Distributionen relativiert sich ja doch stark, weil ja alle den gleichen Kernel nehmen in unterschiedlichen Versionen. Ok zum Teil etwas modifiziert, oder wie bei Red Hat werden Treiber rückportiert. Ob das aber wirklich Auswirkungen auf eine Anwendung im Container hat?

Klar kann auch verstehen, dass MS sich da absichern will und bei Ihrer Datenbank nichts dem Zufall überlassen möchte. Als Anwender, der sowieso kein Support von MS bekommt, frage ich mich halt, ob ich darauf wirklich achten muss. Wenn sie wenigsten noch Ubuntu 20.04 vorschreiben würden... :-)

MS hat in ihrem github Repo auch unterschiedliche Container für die einzelnen Distributionen, alle nur etwas angestaubt. Daher hat es mich auch aus Neugier interessiert ob das aus technischer Sicht einen Unterschied macht.
 
Der Kernel ist aber bei weitem nicht der einzige Faktor. Einige weitere Faktoren sind Paketquellen (nicht alle sind gleich gut gepflegt, Ubuntu hust), unterschiedliche Standardkonfigurationen, etc.
 
  • Gefällt mir
Reaktionen: snaxilian
jb_alvarado schrieb:
Ok zum Teil etwas modifiziert [...] Auswirkungen auf eine Anwendung im Container hat?
Genau das. MS hat weder Zeit noch Lust allen diesen Änderungen hinterher zu gucken ob und welche Auswirkungen das ggf. hat und du vermutest es, dass es keine Einflüsse hat.
Ubuntu 16.04 hat zumindest auf dem Papier noch Support bis April 2024 also wo ist das Problem?^^
Ansonsten mache ein diff zwischen den Versionen im git, dann siehst du Unterschiede oder guck in die Release Notes ;)
 
Also ihr würdet hier auf Nummer sicher gehen, und Ubuntu 16.04 installieren mit der Docker Version aus dem Standard Repo?
 
Das kann man nicht pauschal beantworten. Wenn du Support von MS willst dann bleibt dir nix anderes übrig. Wenn du mit einem anderen Host-OS Probleme fest stellst dann ist es ratsam eine supportete/getestete Kombination auszuprobieren. Wenn die Probleme dann verschwunden oder geringer sind, lag es am Unterbau. Bleiben die Probleme aber, dann ist der Fehler woanders zu suchen.
 
  • Gefällt mir
Reaktionen: jb_alvarado
snaxilian schrieb:
Ubuntu 16.04 hat zumindest auf dem Papier noch Support bis April 2024 also wo ist das Problem?^^
Nach April 21 wird es aber recht teuer. Dazu kommt, dass zumindest docker.io aus universe kommt und daher nicht vom Support gedeckelt ist.
 
Danke für den Hinweis, stimmt natürlich. An kostenfreien Varianten bleibt dann ja eigentlich nur noch Cent OS 7 und MS SQL 2019. "Offiziell" auch nicht supportet aber Cent OS und RHEL sind ja quasi Klone.
 
Wenn dir Support nicht wichtig ist dann würde ich es auf anderen Distris einfach mal ausprobieren.

Ubuntu 18.04 ist allerdings auch supported:
https://docs.microsoft.com/en-us/sql/linux/quickstart-install-connect-docker

Selbst bei einer nativen Installation sind aber nur ein paar Distris zulässig:
https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-setup

Hier ist übrigens ein guter Guide für SQL Server über WSL2:
https://github.com/dbafromthecold/SqlServerAndContainersGuide/wiki
 
  • Gefällt mir
Reaktionen: jb_alvarado
Zurück
Oben