Heim > Artikel > Betrieb und Instandhaltung > Docker unter Linux: Wie automatisiere ich Containertests und -überwachung?
Docker unter Linux: Wie führt man automatisierte Tests und Überwachung von Containern durch?
Mit der rasanten Entwicklung der Containertechnologie hat sich Docker zu einer der beliebtesten Containerisierungsplattformen entwickelt. Bei der Verwendung von Docker für die Anwendungsbereitstellung und -verwaltung ist das automatisierte Testen und Überwachen von Containern besonders wichtig. In diesem Artikel wird die Verwendung von Docker unter Linux zum automatisierten Testen und Überwachen von Containern vorgestellt und entsprechende Codebeispiele bereitgestellt.
1. Automatisiertes Testen von Docker
FROM python:3.8-alpine WORKDIR /app COPY requirements.txt ./ RUN pip install --no-cache-dir -r requirements.txt COPY . . CMD [ "python", "./app.py" ]
Die obige Docker-Datei wurde für eine Python-basierte Anwendung erstellt, indem zunächst ein neues Image basierend auf dem python:3.8-alpine
-Image erstellt wurde. Legen Sie dann das Arbeitsverzeichnis auf /app
fest, kopieren Sie die für die Anwendung erforderliche Abhängigkeitsdatei requirements.txt
in den Container und installieren Sie die Abhängigkeiten. Kopieren Sie dann alle Dateien im aktuellen Verzeichnis in den Container und verwenden Sie die Direktive CMD
, um den Befehl anzugeben, der beim Start des Containers ausgeführt werden soll. python:3.8-alpine
镜像构建一个新的镜像。然后设置工作目录为/app
,将应用程序所需的依赖文件requirements.txt
复制到容器中,并安装依赖。接着将当前目录中的所有文件都复制到容器中,并通过CMD
指令指定容器启动时执行的命令。
docker build
命令构建Docker镜像,如下所示:$ docker build -t myapp:latest .
上述命令将基于当前目录中的Dockerfile构建名为myapp
的最新版本镜像。
接下来,使用docker run
命令运行容器,并指定相应的端口映射等配置,如下所示:
$ docker run -d -p 8080:8080 --name myapp-container myapp:latest
上述命令将运行名为myapp-container
的容器,并将容器内的8080端口映射到主机的8080端口。
unittest
模块编写测试用例。以下是一个简单的示例:import unittest import requests class TestApp(unittest.TestCase): def setUp(self): self.url = 'http://localhost:8080/' def tearDown(self): pass def test_hello(self): response = requests.get(self.url + 'hello') self.assertEqual(response.status_code, 200) self.assertEqual(response.text, 'Hello, world!') if __name__ == '__main__': unittest.main()
上述示例中,setUp
方法用于初始化测试环境,tearDown
方法用于清理测试环境。test_hello
方法是一个具体的测试用例,使用requests
库发送HTTP请求,并进行断言判断返回结果是否符合预期。
test_app.py
,可以使用以下命令运行测试脚本:$ python test_app.py
二、Docker的监控
首先,需要在容器中安装和配置Prometheus。这可以通过在Dockerfile中添加相应的指令来实现,具体步骤如下:
FROM prom/prometheus:v2.26.0 COPY prometheus.yml /etc/prometheus/
prometheus.yml
global: scrape_interval: 5s scrape_configs: - job_name: 'myapp' static_configs: - targets: ['myapp-container:8080']
上述配置文件中,scrape_interval
指定了数据采集的间隔时间,scrape_configs
定义了要监控的目标。
docker run
命令启动Prometheus容器,如下所示:$ docker run -d -p 9090:9090 -v /path/to/prometheus.yml:/etc/prometheus/prometheus.yml --name prometheus prom/prometheus:v2.26.0
上述命令将运行名为prometheus
的容器,并将容器内的9090端口映射到主机的9090端口,同时将主机上的prometheus.yml
文件挂载到容器中。
http://localhost:9090
docker build
das Docker-Image erstellen, wie unten gezeigt: rrreee Der obige Befehl basiert auf der aktuellen Docker-Datei im Verzeichnis und erstellt das neueste Versionsimage mit dem Namen myapp
.
Als nächstes verwenden Sie den Befehl docker run
, um den Container auszuführen und die entsprechende Portzuordnung und andere Konfigurationen anzugeben, wie unten gezeigt:
myapp-container aus
Container und ordnen Sie den 8080-Port im Container dem 8080-Port des Hosts zu. unittest
zum Schreiben von Testfällen verwenden. Das Folgende ist ein einfaches Beispiel: setUp
zum Initialisieren der Testumgebung und die Methode tearDown
zum Bereinigen verwendet die Testumgebung. Die Methode test_hello
ist ein spezifischer Testfall, der die Bibliothek requests
verwendet, um HTTP-Anfragen zu senden und Aussagen zu treffen, um zu bestimmen, ob die zurückgegebenen Ergebnisse den Erwartungen entsprechen. 🎜test_app.py
gespeichert ist, können Sie den folgenden Befehl verwenden, um das Testskript auszuführen: 🎜🎜rrreee🎜2. Docker-Überwachung verwenden🎜Prometheus ist ein offenes Quellenüberwachungssystem, das im Docker-Ökosystem weit verbreitet ist. Prometheus bietet leistungsstarke Unterstützung für die Containerüberwachung, indem es Zeitreihendaten sammelt und speichert und flexible Abfrage- und Visualisierungsfunktionen bereitstellt. 🎜🎜🎜Zuerst muss Prometheus im Container installiert und konfiguriert werden. Dies kann durch Hinzufügen der entsprechenden Anweisungen in der Docker-Datei erreicht werden. Die spezifischen Schritte sind wie folgt: 🎜🎜🎜Prometheus herunterladen und installieren🎜🎜rrreee🎜🎜Erstellen Sie die Prometheus-Konfigurationsdatei prometheus.yml
🎜🎜rrreee 🎜Die obige Konfigurationsdatei scrape_interval
gibt das Intervall für die Datenerfassung an und scrape_configs
definiert die zu überwachenden Ziele. 🎜docker run
verwenden, um den Prometheus-Container zu starten, wie unten gezeigt: 🎜🎜rrreee🎜Der obige Befehl führt den Container mit dem Namen prometheus
aus, ordnet Port 9090 im Container dem Port 9090 auf dem Host zu und mountet die Datei prometheus.yml
auf dem Host in den Container. 🎜http://localhost:9090
auf zugreifen Browser. In dieser Schnittstelle können Daten über die PromQL-Abfragesprache abgefragt und visualisiert werden. 🎜🎜🎜Zusammenfassung🎜🎜In diesem Artikel wird vorgestellt, wie Sie Docker unter Linux zum automatisierten Testen und Überwachen von Containern verwenden. Wenn Sie automatisierte Tests durchführen, müssen Sie eine Docker-Datei erstellen, den Container erstellen und ausführen und das entsprechende Testskript zum Testen schreiben. Bei der Überwachung von Containern können Sie Prometheus zum Sammeln und Speichern von Zeitreihendaten verwenden und PromQL für Abfragen und Visualisierung verwenden. Durch die oben genannten Methoden können Docker-Container besser verwaltet und überwacht werden, um die Stabilität und Zuverlässigkeit von Anwendungen sicherzustellen. 🎜🎜Referenzen: 🎜🎜🎜Offizielle Dokumentation von Docker: https://docs.docker.com/🎜🎜Offizielle Dokumentation von Prometheus: https://prometheus.io/docs/🎜🎜Das obige ist der detaillierte Inhalt vonDocker unter Linux: Wie automatisiere ich Containertests und -überwachung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!