Erweitertes Docker-Container-Management
Nachdem Sie Ihre Webanwendung erfolgreich in einem Docker-Container ausgeführt haben, wollen wir einige zusätzliche Funktionen und Techniken zur Verwaltung von Docker-Containern untersuchen.
Ausführen mehrerer Instanzen
Sie können mehrere Instanzen Ihrer Webanwendung auf verschiedenen Ports ausführen. Dies ist nützlich zum Testen oder zum gleichzeitigen Ausführen verschiedener Versionen Ihrer App.
Zuerst stoppen und entfernen wir unseren vorherigen Container:
docker rm -f my-web-container
Nun lassen Sie uns zwei Instanzen unserer Webanwendung auf verschiedenen Ports ausführen:
docker run -d -p 5000:5000 --name web-app-1 my-flask-app
docker run -d -p 5001:5000 --name web-app-2 my-flask-app
Überprüfen Sie, ob beide Container ausgeführt werden:
docker ps
Sie sollten zwei laufende Container sehen:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
xxxxxxxxxxxx my-flask-app "python app.py" xx seconds ago Up xx seconds 0.0.0.0:5001->5000/tcp web-app-2
xxxxxxxxxxxx my-flask-app "python app.py" xx seconds ago Up xx seconds 0.0.0.0:5000->5000/tcp web-app-1
Jetzt können Sie auf dieselbe Anwendung über zwei verschiedene Ports zugreifen:
- http://localhost:5000
- http://localhost:5001
Container-Ressourcenbeschränkungen
Docker ermöglicht es Ihnen, Ressourcenbeschränkungen für Ihre Container festzulegen. Dies ist nützlich, um zu verhindern, dass ein Container zu viele Systemressourcen verbraucht.
Lassen Sie uns unsere vorherigen Container stoppen und entfernen:
docker rm -f web-app-1 web-app-2
Nun lassen Sie uns einen Container mit Speicher- und CPU-Beschränkungen ausführen:
docker run -d -p 5000:5000 --name limited-container --memory=512m --cpus=0.5 my-flask-app
Dieser Befehl erstellt einen Container mit:
- Maximal 512 MB Speicher
- Maximal 0,5 CPU-Kerne
Überprüfen Sie, ob der Container ausgeführt wird:
docker ps
Container-Umgebungsvariablen
Umgebungsvariablen sind eine gängige Methode, um Anwendungen in Docker-Containern zu konfigurieren. Ändern wir unsere Flask-Anwendung, um eine Umgebungsvariable zu verwenden:
docker rm -f limited-container
Erstellen Sie eine neue Version der Datei app.py:
cd ~/project/my-web-app
nano app_env.py
Fügen Sie den folgenden Code hinzu:
import os
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
app_name = os.environ.get('APP_NAME', 'Default App')
return f"<h1>Hello from {app_name}!</h1><p>This is a simple web application running in a Docker container.</p>"
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)
Drücken Sie Ctrl+O
gefolgt von Enter
, um die Datei zu speichern, und dann Ctrl+X
, um Nano zu verlassen.
Erstellen Sie ein neues Dockerfile:
nano Dockerfile-env
Fügen Sie den folgenden Inhalt hinzu:
FROM python:3.9-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY app_env.py ./app.py
EXPOSE 5000
CMD ["python", "app.py"]
Drücken Sie Ctrl+O
gefolgt von Enter
, um die Datei zu speichern, und dann Ctrl+X
, um Nano zu verlassen.
Erstellen Sie ein neues Image:
docker build -t my-flask-app-env -f Dockerfile-env .
Führen Sie nun den Container mit einer Umgebungsvariablen aus:
docker run -d -p 5000:5000 --name env-container -e APP_NAME="Customized App" my-flask-app-env
Greifen Sie auf die Webanwendung zu:
curl http://localhost:5000
Sie sollten sehen:
<h1>Hello from Customized App!</h1><p>This is a simple web application running in a Docker container.</p>
Dies zeigt, wie Sie Konfigurationen mithilfe von Umgebungsvariablen an Ihre containerisierten Anwendungen übergeben können.