Heim  >  Artikel  >  Betrieb und Instandhaltung  >  Docker unter Linux: Wie automatisiere ich Containertests und -überwachung?

Docker unter Linux: Wie automatisiere ich Containertests und -überwachung?

WBOY
WBOYOriginal
2023-07-30 19:34:51960Durchsuche

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

  1. Docker-Datei erstellen
    Zuerst müssen Sie eine Docker-Datei für die zu testende Anwendung erstellen. Eine Docker-Datei ist eine Textdatei, die eine Reihe von Anweisungen zum Erstellen eines Docker-Images enthält. Hier ist ein einfaches Beispiel einer Docker-Datei:
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指令指定容器启动时执行的命令。

  1. 构建和运行容器
    完成Dockerfile的编写后,可以使用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端口。

  1. 编写自动化测试脚本
    为了进行自动化测试,需要编写相应的测试脚本。以Python为例,可以使用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请求,并进行断言判断返回结果是否符合预期。

  1. 运行自动化测试
    完成测试脚本的编写后,可以通过在主机上运行测试脚本来对容器进行自动化测试。假设测试脚本保存为test_app.py,可以使用以下命令运行测试脚本:
$ python test_app.py

二、Docker的监控

  1. 使用Prometheus监控
    Prometheus是一款开源的监控系统,它在Docker生态系统中被广泛使用。Prometheus通过采集和存储时间序列数据,并提供灵活的查询和可视化功能,为容器的监控提供了强大的支持。

首先,需要在容器中安装和配置Prometheus。这可以通过在Dockerfile中添加相应的指令来实现,具体步骤如下:

  • 下载并安装Prometheus
FROM prom/prometheus:v2.26.0

COPY prometheus.yml /etc/prometheus/
  • 创建Prometheus配置文件prometheus.yml
global:
  scrape_interval: 5s

scrape_configs:
  - job_name: 'myapp'
    static_configs:
      - targets: ['myapp-container:8080']

上述配置文件中,scrape_interval指定了数据采集的间隔时间,scrape_configs定义了要监控的目标。

  1. 启动Prometheus容器
    完成Dockerfile和配置文件的编写后,可以使用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文件挂载到容器中。

  1. 访问Prometheus Web界面
    完成Prometheus容器的启动后,可以通过浏览器访问http://localhost:9090
    1. Container erstellen und ausführen
    Nachdem Sie mit dem Schreiben der Docker-Datei fertig sind, können Sie mit dem Befehl 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:

    rrreee
      Der obige Befehl führt den Namen myapp-container aus Container und ordnen Sie den 8080-Port im Container dem 8080-Port des Hosts zu.
      1. Schreiben Sie automatisierte Testskripte
      2. Um automatisierte Tests durchzuführen, müssen Sie entsprechende Testskripte schreiben. Am Beispiel von Python können Sie das Modul unittest zum Schreiben von Testfällen verwenden. Das Folgende ist ein einfaches Beispiel:
      rrreee🎜Im obigen Beispiel wird die Methode 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. 🎜
        🎜Automatisierte Tests ausführen🎜Nach Abschluss des Schreibens des Testskripts können Sie automatisierte Tests für den Container durchführen, indem Sie das Testskript auf dem Host ausführen. Vorausgesetzt, dass das Testskript als 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. 🎜
          🎜Starten Sie den Prometheus-Container🎜Nachdem Sie das Schreiben der Docker-Datei und der Konfigurationsdateien abgeschlossen haben, können Sie den Befehl 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. 🎜
            🎜Zugriff auf die Prometheus-Weboberfläche🎜Nachdem der Start des Prometheus-Containers abgeschlossen ist, können Sie die Prometheus-Weboberfläche öffnen, indem Sie über 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!

      Stellungnahme:
      Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn