Sobald Sie die Grund­la­gen der Arbeit mit Docker erlernt haben, ist der nächste Schritt, Ihre eigenen Images zu erstellen und zu speichern.

Es gibt zwei Mög­lich­kei­ten, ein Docker-Image zu erstellen:

  • Manuell mit dem Befehl docker commit oder
  • Au­to­ma­tisch mit einer Docker-Datei.

An­for­de­run­gen

  • IONOS Linux Cloud Server
  • Docker in­stal­liert und läuft
  • Grund­le­gen­de Kennt­nis­se der Docker-Funk­tio­na­li­tät und der -Befehle

Sicheres Arbeiten mit Docker ohne Sudo

Der Docker-Daemon läuft als root, was bedeutet, dass Benutzer sudo verwenden müssen, um Docker-Befehle aus­zu­füh­ren.

Um nicht für jeden Docker-Befehl sudo verwenden zu müssen, fügen Sie einfach Ihre Benutzer mit folgendem Befehl zur Docker-Gruppe hinzu:

usermod -aG docker [username]

Wenn Sie bei­spiels­wei­se den Benutzer jdoe zur Docker-Gruppe hin­zu­fü­gen, muss dieser Benutzer nicht mehr sudo für jeden Docker-Befehl verwenden. Um den Benutzer zur Gruppe hin­zu­zu­fü­gen, verwenden Sie den Befehl:

usermod -aG docker jdoe
Cloud Server
Leis­tungs­star­ke Kon­fi­gu­ra­tio­nen
  • On-Demand ska­lier­bar & Root-Zugriff inklusive
  • Hoch­ver­füg­ba­re Server-Plattform
  • ISO-zer­ti­fi­zier­te Re­chen­zen­tren am Standort Deutsch­land

Manuelles Erstellen eines Images mit "docker commit"

Der ein­fachs­te Weg um zu beginnen, ist, einen Container aus einem bereits vor­han­de­nen Image zu erstellen, Ihre Än­de­run­gen vor­zu­neh­men und diesen Container dann als Image zu speichern. Für dieses Tutorial erstellen wir einen Container aus dem of­fi­zi­el­len CentOS 7 Image, in­stal­lie­ren das MySQLdb Python Modul und speichern diesen neuen Container dann als Image mit Docker Commit.

Das of­fi­zi­el­le CentOS 7-Image trägt den Namen centos. Sie können es mit folgendem Befehl aus der Docker-Registry her­un­ter­la­den:

sudo docker pull centos
Hinweis

Wenn Sie lieber Ubuntu verwenden, ersetzen Sie statt­des­sen einfach ein Ubuntu-Image.

Starten Sie zunächst einen Container namens python-with-mysql aus dem centos-Image mit folgendem Befehl:

sudo docker run -it --name python-with-mysql centos bash

Sobald Sie sich an der Ein­ga­be­auf­for­de­rung im neuen Container befinden, in­stal­lie­ren Sie das MySQLdb Python-Modul mit dem Befehl:

yum -y install MySQL-python

Wenn die In­stal­la­ti­on ab­ge­schlos­sen ist, verwenden Sie STRG-p STRG-q, um den Container zu verlassen.

Als nächstes speichern Sie den Container als Image mit dem Befehl docker commit, der die folgende Syntax aufweist:

sudo docker commit -m "[build notes]" -a "creator info" [container name or ID] [name of image]:[version tag]
  • Erstellen Sie Notizen, zum Beispiel eine kurze Erklärung der Än­de­run­gen an diesem Image
  • Info über Autor: Ihr Name und (falls zu­tref­fend) Ihre Kon­takt­da­ten
  • Con­tai­ner­na­me oder ID: Diese In­for­ma­tio­nen finden Sie mit dem Befehl sudo docker ps -a
  • Name des Images: Geben Sie Ihrem Image einen kurzen, aber an­schau­li­chen Namen
  • Optional: Versions-Tag: Die Ver­si­ons­num­mer Ihres Images. Sie können entweder eine Nummer angeben (wie v1, v2, v3, etc.) oder Sie können "latest" verwenden. Wenn Sie den Versions-Tag weglassen, wird "latest" an­ge­nom­men.

Um den Container python-with-mysql als Image namens python/mysql zu speichern, verwenden Sie den Befehl:

sudo docker commit -m "Added MySQL-python module" -a "J Doe" python-with-mysql python/mysql

Um einen Container von diesem neuen Image aus aus­zu­füh­ren, verwenden Sie den Befehl:

sudo docker run -it python/mysql /bin/bash

Au­to­ma­ti­sches Erstellen eines Images mit einer Docker-Datei

Das manuelle Erstellen eines Bildes mit Docker Commit funk­tio­niert gut, ist aber ein um­ständ­li­cher Prozess. Es ist auch einfacher, eine Docker-Datei mit Ihrem Team zu teilen, als eine Liste von Befehlen, die aus­ge­führt werden müssen. Obwohl Docker Commit für einige An­wen­dun­gen gut funk­tio­niert, ist es auf lange Sicht prak­ti­scher, eine Docker-Datei zu verwenden.

Eine Docker-Datei enthält eine Reihe von An­wei­sun­gen zum Erstellen eines neuen Images. Für dieses Tutorial folgen wir dem gleichen Prozess wie im vor­he­ri­gen Abschnitt: Wir erstellen einen Container aus dem of­fi­zi­el­len CentOS 7 Image und in­stal­lie­ren das MySQLdb Python Modul.

Das of­fi­zi­el­le CentOS 7-Image trägt den Namen centos. Sie können es von der Docker-Website mit folgendem Befehl her­un­ter­la­den:

sudo docker pull centos
Hinweis

Wenn Sie lieber Ubuntu verwenden, ersetzen Sie statt­des­sen einfach ein Ubuntu-Image.

Erstellen Sie zunächst ein neues Ver­zeich­nis für Ihre Docker-Datei:

mkdir python-mysql

In diesem Ver­zeich­nis werden alle not­wen­di­gen Dateien abgelegt, die in den Build auf­ge­nom­men werden sollen. Es ist wichtig, zunächst ein neues Ver­zeich­nis zu erstellen, da alles, was sich in diesem Ver­zeich­nis befindet, beim Ausführen des Build-Befehls an den Docker-Daemon über­tra­gen wird.

Als nächstes erstellen Sie eine Datei namens Do­cker­file im python-mysql-Ver­zeich­nis. Beachten Sie, dass der Dateiname groß­ge­schrie­ben werden muss.

cd python-mysql
sudo nano Dockerfile

Diese Datei enthält alle Ihre Build-Befehle. Eine voll­stän­di­ge Liste der ver­füg­ba­ren Befehle und deren Ver­wen­dung finden Sie auf der Eine voll­stän­di­ge Liste der ver­füg­ba­ren Befehle und deren Ver­wen­dung finden Sie auf der Docker-Website.

Die grund­le­gen­den Inhalte der Do­cker­file sind einfach zu verstehen:

  • Jede Zeile, die mit einem # beginnt, wird über­sprun­gen. Verwenden Sie dies für Kom­men­ta­re.
  • Das Stan­dard­for­mat ist: IN­S­TRUC­TION-Anweisung, mit der Anweisung in all-caps.

Fügen Sie Folgendes in Ihre Docker-Datei ein:

# The source image to start with
FROM centos
# Your contact info
MAINTAINER J Doe ;jdoe@example.com
# Run a command inside the image
RUN yum -y install MySQL-python

Speichern und beenden Sie die Datei.

Um ein Image namens python/mysql/do­cker­file aus dieser Do­cker­file zu erstellen, verwenden Sie den Befehl:

sudo docker build -t python/mysql/dockerfile:v1 .

Für die Docker-Datei geben wir die Version v1 an, da wir erwarten, dass dieses Image in Zukunft frei­ge­ge­ben und/oder ak­tua­li­siert wird.

Um einen Container namens python-with-mysql-from-do­cker­file aus dem python/mysql/do­cker­file-Image zu starten, verwenden Sie den Befehl:

sudo docker run --name python-with-mysql-from-dockerfile -it python/mysql/dockerfile:v1 bash
Cloud Backup powered by Acronis
Mi­ni­mie­ren Sie Aus­fall­zei­ten mit unserem Kom­plett­schutz
  • Au­to­ma­tisch: Backups und Recovery
  • Intuitiv: Planung und Ma­nage­ment
  • In­tel­li­gent: KI-basierter Be­dro­hungs­schutz
  • Inkl. 300,- € Start­gut­ha­ben im 1. Monat
Zum Hauptmenü