2016-07-17 6 views
3

Ich bin neu in Docker und versuche, das Konzept des Basisbildes zu verstehen.Wie funktioniert eine Docker-Anwendung mit Ubuntu als Basis-Image unter Windows?

Angenommen, ich habe eine Hallo-Welt-Docker-App auf Windows-Rechner mit Ubuntu als Basis-Image in Dockerfile.

Jetzt, um diese hallo-world-Anwendung auszuführen, wird docker das gesamte ubuntu installieren, um die Anwendung auszuführen?

Wenn nicht, dann wie Ubuntu-Basisbild wird hier verwendet und Wie wird Docker Container die Kommutierung zwischen Ubuntu-basierten Anwendung und Windows OS erleichtern?

+1

Ich denke, Ihre Frage reduziert sich auf "wie funktioniert Docker unter Windows?". –

+0

Docker erstellt eine VM, um die Container auszuführen, deshalb brauchen Sie VirtualBox. Das zugrunde liegende Betriebssystem ist nicht besonders relevant. – jonrsharpe

Antwort

4

Jetzt, um diese hallo-world-Anwendung auszuführen, wird Docker das ganze Ubuntu installieren, um die Anwendung auszuführen?

Nein, die verwendete ubuntu image ist nicht "das ganze ubuntu". Es ist eine abgespeckte Version ohne die gesamte X11-Grafikebene. Immer noch 180 MB: siehe "Docker Base Image OS Size Comparison".

In diesen Tagen, Sie eher ein Alpine image (5 MB) verwenden würde: siehe "Docker Official Images are Moving to Alpine Linux"

die hello-world application specifically Bezug gibt es keine Ubuntu oder beteiligt Alpine. Nur 1.8 KB of C machine-code, die nur direkte Aufrufe an den Linux-Kernel des Hosts macht.

Die Linux-Host von Docker Behältern durch das System verwendet wird, ruft: "What is meant by shared kernel in Docker?"

Unter Windows sehen, sagte Linux-Host von VirtualBox VM zur Verfügung gestellt wurde eine boot2docker VM ausgeführt wird, von einem TinyCore distro gebaut.

Mit der neueren "Docker for Windows" wird die gleiche VM durch die Hyper-V Windows feature ausgeführt.

+0

Angenommen, es gibt ein Basisbild für MacOS. Kann es unter Windows laufen? Wird docker eine neue VM für MacOS über Hyper-V erstellen? –

+0

@JacobPhan Es gibt kein "Basisbild für MacOS": Jedes Basisbild ist ein Bild, das auf jedem Linux-Kernel laufen kann. Solange Ihr Host (Mac oder Windows) in der Lage ist, eine VM mit einem Linux (und seinem Kernel und einem darin installierten Docker) bereitzustellen, wird dieses Basisimage ausgeführt. – VonC

+0

Gibt es auch kein "Basisbild für Windows"? Ist es möglich, ein Image mit IIS, Sitzungsstatus, MSMQ, SQL Server zu erhalten? –