November 2020
Autor:in des Beitrags
Matthias
Architect Cloud
Veröffentlicht am
23.11.2020 von Matthias
Jetzt Blogbeitrag teilen
Xing LinkedIn Facebook Twitter
In 3 einfachen Schritten

zum eigenen Windows Docker Container

Docker Container gibt es hunderte und eigentlich für jeden Anwendungsfall.

Doch was tun, wenn man keinen Container von Docker Hub benutzen darf?

Selbst bauen, genau!

Und deshalb zeige ich Dir in diesem Artikel, wie Du in 3 einfachen Schritten Deinen eigenen Windows Docker Container erstellen kannst.

Die einzige Voraussetzung damit du starten kannst, ist eine Docker Desktop for Windows Installation.

Docker Image und Docker Container

Bevor ich beginne, noch eine kurze Erklärung zu den Begriffen Docker Image und Docker Container:

Ein Image wird anhand eines Dockerfiles erstellt und kann danach nicht mehr geändert werden („read-only). Das erstellte Image kann in einer Container Registry wie z.B. Docker Hub gespeichert werden. Starten wir einen Container, wird dieser aus einem Image erzeugt. Somit ist ein Container die Instanz eines Images.

Schritt 1 –

Was für einen Docker Container brauchen wir?

Für die Implementierung eines Programms, welches In-House entwickelt wurde, benötigen wir einen Docker Container mit einem Windows Betriebssystem und einer installierten python Version (mind. 3.6).

Wie bereits in der Einleitung erwähnt, dürfen wir in diesem Projekt aber keine Docker Hub Images benutzten. Security Vorgabe!

Microsoft Images aus der MCR (Microsoft Container Registry) hingegen sind erlaubt.  Die MCR ist ein „geschlossenes“ System und nur Microsoft stellt dort Images bereit.

Basis Image

Für Windows Container haben sich im Server Bereich die Varianten des Nano- oder Core Server als Basis etabliert.Ich entscheide mich für die Core Version, da diese auch eine Powershell beinhaltet Da unser Hostsystem ein Windows IoT Server 2019 ist, haben wir eine Abhängigkeit zur OS Version.Mein Basis Image ist deshalb ein Microsoft Server Core in der Version 1809.

Zusätzliche Installation – Python

Damit python Code im Container lauffähig wird, benötigen wir die entsprechenden Libraries/Runtimes.

Hierfür nutze ich die aktuelle Version 3.9 von python in meinem Container Image.

Nachdem ich jetzt definiert habe, was in meinem Container benötigt wird, kann ich das Image erstellen.

Schritt 2

Dockerfile

Das Dockerfile ist eine Textdatei und sozusagen der Baukasten für ein Container Image. Anhand dieses Baukastens sagen wir Docker, mit was und wie das Image gebaut werden soll.

Beispiel:
Einfaches Dockerfile – Installiert wird ein python image (FROM) und mit pip wird die Erweiterung Django installiert (RUN). Beim Starten des Containers wird dann die Versionsinfo ausgegeben (CMD).

FROM python

LABEL Description="Django" Vendor="Django Software Foundation" Version="2.2"

RUN ["pip", "install", "Django==2.2"]

CMD ["django-admin --version"]

Schritt 3

Docker Container erstellen

Mit dem dockerfile können wir jetzt relativ einfach ein Docker Container Image bauen.

Dazu öffne ich eine PowerShell (CMD geht natürlich auch) und wechsle in das Verzeichnis, indem ich das dockerfile abgelegt habe.

Docker Build

Zum Erstellen des Images benutze ich jetzt den docker build Befehl.

Docker build -t : .

Der Parameter -t definiert den Namen für das Image/Repository und einem (optionalen) Tag.

Der Punkt am Ende bedeutet, dass das dockerfile im ausführenden Verzeichnis genutzt werden soll.

Docker baut nun das Container Image nach „unseren“ Vorgaben zusammen.

Ein paar Minuten später, je nach Größe der Downloads und der Anzahl der Installation, sollte die Erstellung mit einer Erfolgsmeldung beendet werden.

Wenn ich jetzt den Befehl

docker images

absetze, bekommen wir unser fertiges Image angezeigt 🙂 .

Docker Run

Natürlich will ich jetzt auch den Docker Container testen. Dafür benutze ich den nachfolgenden Befehl:

docker run -ti --name wincore-python-test win-core1809-python:3.9.0

Die Option -ti benutze ich, um ein sogenanntes pseudo Terminal zu öffnen. Vereinfacht gesagt soll Docker den Container starten und darin eine Konsole öffnen.

Um den Container mit einem Namen ansprechen zu können, nutzen wir die Option

 "- -name".

Und zu guter Letzt sage ich Docker noch, welches Image + Version gestartet werden soll.

Das war’s, der Container läuft!

Einen kleinen Tipp habe ich noch 😉 Wird beim Build Prozess keine Version (Tag) genutzt, startet docker run das Image immer mit der Option latest. Wird eine Version angegeben, wie ich es gemacht habe, muss diese Version auch beim Run Befehl angegeben werden, sonst gibt es einen Fehler!

Container Image Update

Wenn ich meinen Container in einer produktiven Umgebung nutzen will, muss ich auch dafür sorgen, dass er regelmäßig mit Updates versorgt wird.

Hierfür bietet es sich an, das Image regelmäßig neu zu erstellen!

Beim Microsoft Core Server haben wir den Vorteil, dass automatisch immer die aktuelle Version bei der Neuerstellung genutzt wird.

Die python Version hingegen muss im dockerfile manuell angepasst werden. Das bedeutet, man benötigt am besten einen Betriebsprozess, der das klar regelt.

Es muss schließlich auch Service übergreifend getestet werden 😉

Fazit

Das Erstellen eigener Docker Images ist nicht schwer und auch der zeitliche Aufwand ist überschaubar. Hängt wie immer von den Anforderungen ab…

Und darum vielleicht ein guter Ansatz, wenn Diskussionen im eigenen Unternehmen oder Projekten bezüglich Security anstehen, die benötigten Images selbst zu erstellen.

Es muss nicht immer Docker Hub sein.

Hast du schon mal Container Images selbst erstellt? Du hast fragen oder möchtest Dich gerne austauschen? Dann kontaktiere mich doch einfach über LinkedIn!

Hast du Fragen?

Melde dich gerne.

Zum detaillierter Updateprozess hast du weitere Fragen. Dann melde dich gerne bei mir

MATTHIAS BRAUN | Cloud Architekt

+49 89 71040920

matthias@provectus.de

 

 

Das könnte dich auch interessieren

Blogbeitrag

Echtes Zero Trust im Citrix-Workspace mit deviceTRUST

Conditional Access prüft beim Login, deviceTRUST während der gesamten Citrix-Session: kontinuierlich und kontextbasiert. Wie du deine Citrix-Umgebung zu einem Zero-Trust-Workspace weiterentwickelst, der Security-Anforderungen und Alltag der Fachbereiche zusammenbringt.
Weiterlesen
Blogbeitrag

Secure Boot 2026: Warum Unternehmen jetzt handeln sollten

2026 laufen wichtige Secure-Boot-Zertifikate ab – erfahren Sie, warum Unternehmen ihre Systeme schon heute prüfen und vorbereiten sollten.
Weiterlesen
Blogbeitrag

KI wirtschaftlich einsetzen: Warum der richtige Workflow wichtiger ist als der Prompt

Mit der verbrauchsabhängigen Abrechnung von Microsoft Copilot Cowork wird Wirtschaftlichkeit im KI-Einsatz zur operativen Frage. Der Artikel zeigt, warum nicht der Prompt, sondern vor allem der passende Workflow über Aufwand, Transparenz und Nutzen entscheidet.
Weiterlesen
Blogbeitrag

US-Urteil zur FTC: Handlungsbedarf für Microsoft-Kunden?

Das Urteil des US Supreme Court zur FTC sorgt für neue Fragen rund um das EU-US Data Privacy Framework. Wir ordnen ein, was das für Microsoft 365, Azure und die nächsten Schritte in der Praxis bedeutet.
Weiterlesen
Blogbeitrag

Die neue Infrastrukturkostenkrise

Hardwarepreise steigen, Virtualisierungslizenzen werden teurer, Energiekosten unberechenbarer. Wer jetzt einfach verlängert, trifft eine Entscheidung, ohne neu gerechnet zu haben. Was sich gerade verändert und warum es sich lohnt, die eigene Infrastruktur neu zu bewerten.
Weiterlesen
Provectus Team
Blogbeitrag

25 Jahre Provectus: Eine Reise, die im Biergarten begann 

Christian Jupe und Josef Lang blicken auf 25 Jahre Provectus zurück: von den ersten Ideen im Biergarten über prägende Kundenprojekte bis zur heutigen Vision als Smart-Work- und Business-Partner. Im Interview sprechen sie über Unternehmenskultur, Werte, Wandel und die Zukunft mit KI.
Weiterlesen
Blogbeitrag

Vom Trainee-Programm ins Kundenprojekt: Unser Rückblick auf acht intensive Monate

Unsere Trainees berichten von den ersten Monaten im Provectus-Traineeprogramm, geben Einblicke in Workshops, Lernphasen und den täglichen Einsatz von KI-Tools und zeigen, wie sie auf ihre Rolle als Junior Professionals vorbereitet werden.
Weiterlesen
Webinar

Moderne Apps brauchen moderne Plattformen: Warum der Betrieb über Ihren Erfolg entscheidet

Für alle, die verstehen wollen, warum Cloud-Projekte nicht an der Migration scheitern, sondern im Betrieb. Unternehmen kämpfen mit steigenden Kosten, fehlender Transparenz und neuen Risiken. Der Grund: Cloud ist kein Infrastrukturthema, sondern ein Betriebsmodell mit klaren Anforderungen.
Weiterlesen
Blogbeitrag

Virtual Workplace Evolution 2026

Wir sind dabei und freuen uns auf einen spannenden Austausch zur Transformation von IT Workplaces. Besuchen Sie unseren Vortrag von Danny Kopper, Principal Consultant & Michael Mahlbacher, Leiter Arbeitsplatz bei MLP Finanzberatung SE zum Thema: Microsoft-Lizenzen optimal nutzen
Weiterlesen
Webinar

DORA-konformer Cloud-Betrieb: So setzen Sie Anforderungen praxisnah um

WEBINAR, 18.06: DORA-konformer Cloud-Betrieb praxisnah erklärt: Erfahren Sie im Webinar, wie Finanzunternehmen regulatorische Anforderungen wirksam, prüfbar und dauerhaft im IT-Betrieb umsetzen.
Weiterlesen
Jetzt Blogbeitrag teilen
Xing LinkedIn Facebook Twitter