Docker-Container und Docker-Images sind zentrale Konzepte in Docker. Ein Image ist eine unveränderliche Vorlage, die den Code, die Bibliotheken, die Abhängigkeiten und andere Dateien enthält, die für das Ausführen einer Anwendung notwendig sind. Ein Container ist eine instanziierte Laufzeitumgebung, die auf einem Docker-Image basiert. In diesem Kapitel werden die Erstellung, Verwaltung und der Einsatz von Docker-Containern und Docker-Images beschrieben.
Ein Docker-Image kann mithilfe eines Dockerfiles erstellt werden, das die Schritte zur Erstellung des Images definiert.
Beispiel: Einfaches Dockerfile
Datei: Dockerfile
# Base image
FROM ubuntu:20.04
# Install dependencies
RUN apt-get update && apt-get install -y python3 python3-pip
# Copy application files
COPY . /app
# Set the working directory
WORKDIR /app
# Install Python dependencies
RUN pip3 install -r requirements.txt
# Command to run the application
CMD ["python3", "app.py"]
Erstellen des Docker-Images:
Befehl:
docker build -t my-python-app .
Ausgabe:
Sending build context to Docker daemon 3.072kB
Step 1/6 : FROM ubuntu:20.04
---> 4e2eef94cd6b
Step 2/6 : RUN apt-get update && apt-get install -y python3 python3-pip
---> Using cache
---> 9b53d9b919f9
Step 3/6 : COPY . /app
---> Using cache
---> a1c0d830bdeb
Step 4/6 : WORKDIR /app
---> Using cache
---> 7f3d5e10d8a7
Step 5/6 : RUN pip3 install -r requirements.txt
---> Using cache
---> b1e7f9c8e872
Step 6/6 : CMD ["python3", "app.py"]
---> Using cache
---> 83be5441286f
Successfully built 83be5441286f
Successfully tagged my-python-app:latest
Befehl:
docker images
Ausgabe:
REPOSITORY TAG IMAGE ID CREATED SIZE
my-python-app latest 83be5441286f 2 minutes ago 447MB
ubuntu 20.04 4e2eef94cd6b 4 weeks ago 72.9MB
Befehl:
docker rmi my-python-app
Befehl:
docker run -d -p 5000:5000 my-python-app
Ausgabe:
Unable to find image 'my-python-app:latest' locally
latest: Pulling from library/my-python-app
Digest: sha256:57a5274c1d6b88e4ff760a48ff0fcd67a3e78028edc8e8e3f5e3ec56f9a127c6
Status: Downloaded newer image for my-python-app:latest
a3b74fbdcb98b11f823eb6764f5bcd8e92a1d15bde5c6852e47a7bc0a27c3d49
Befehl:
docker ps
Ausgabe:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a3b74fbdcb98 my-python-app "python3 app.py" 2 minutes ago Up 2 minutes 0.0.0.0:5000->5000/tcp vigorous_bhaskara
Befehl:
docker stop a3b74fbdcb98
Befehl:
docker rm a3b74fbdcb98
Befehl:
docker logs a3b74fbdcb98
Ausgabe:
* Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
Befehl:
docker exec -it a3b74fbdcb98 /bin/bash
Erklärung: Dieser Befehl öffnet eine interaktive Bash-Shell im laufenden Container.
Docker-Volumes ermöglichen es, Daten außerhalb des Containers zu speichern, sodass sie beim Neustarten oder Löschen des Containers nicht verloren gehen.
Befehl:
docker volume create my-volume
Befehl:
docker run -d -p 5000:5000 -v my-volume:/app/data my-python-app
Erklärung: Dieser Befehl startet einen Container und
bindet das Docker-Volume my-volume
an das Verzeichnis
/app/data
im Container.
Die Verwaltung von Docker-Containern und -Images ist entscheidend für den effektiven Einsatz von Docker in der Entwicklungs- und Produktionsumgebung. Docker-Images bieten eine wiederholbare und portable Möglichkeit, Anwendungen zu paketieren, während Docker-Container die Ausführung dieser Anwendungen in isolierten Umgebungen ermöglichen. Im nächsten Kapitel wird die Erstellung und Verwendung von Dockerfiles behandelt.