Für Container ist die einfachste Integritätsprüfung die Integritätsprüfung auf Prozessebene, die überprüft, ob der Prozess aktiv ist. Der Docker Daemon überwacht automatisch den PID1-Prozess im Container. Wenn im Docker-Run-Befehl die Neustartrichtlinie angegeben ist, kann der beendete Container gemäß der Richtlinie automatisch neu gestartet werden. In vielen praktischen Szenarien reicht die Verwendung von Integritätsprüfmechanismen allein auf Prozessebene bei weitem nicht aus. Beispielsweise kann der Containerprozess, obwohl er noch läuft, aufgrund eines Anwendungsdeadlocks nicht mehr auf Benutzeranforderungen reagieren. Solche Probleme können durch die Prozessüberwachung nicht erkannt werden. Um zu verhindern, dass der Container nach einem Stromausfall oder einer abnormalen Abschaltung nicht automatisch gestartet werden kann, können wir normalerweise Folgendes hinzufügen: --restart=immer Zum Beispiel [root@aliyun ~]# docker run --restart=always -d --name blog -d -v /www:/www -v /wwwlogs:/var/log/wwwlogs -p 65423:65422 -p 80:80 -p 443:443 677 7714a84063ee6d405c80b891254bba0e5930f5d271c5ad76cfd6e2f0058d8056 Auf diese Weise kann der Container automatisch neu gestartet werden, manchmal gerät das Programm jedoch in einen Deadlock-Zustand oder einen Endlosschleifenzustand, der Anwendungsprozess wird nicht beendet, aber der Container kann keine Dienste mehr bereitstellen. Vor 1.12 konnte Docker diesen Zustand des Containers nicht erkennen und ihn nicht neu planen. Dies führte dazu, dass einige Container zwar keine Dienste bereitstellen konnten, aber weiterhin Benutzeranforderungen akzeptierten. Seit 1.12 verfügt Docker über die Anweisung HEALTHCHECK, die eine Befehlszeile angibt, um zu bestimmen, ob der Servicestatus des Hauptprozesses des Containers noch normal ist, und so den tatsächlichen Status des Containers realistischer widerspiegelt. Wenn die HEALTHCHECK-Anweisung in einem Image angegeben ist, wird der Container damit gestartet. Der Anfangsstatus ist „Starten“. Nachdem die Prüfung der HEALTHCHECK-Anweisung erfolgreich war, ändert sich der Status in „Healthy“. Wenn die Prüfung eine bestimmte Anzahl von Malen hintereinander fehlschlägt, ändert sich der Status in „Unhealthy“. HEALTHCHECK unterstützt die folgenden Optionen:
Der auf HEALTHCHECK [Option] CMD folgende Befehl hat dasselbe Format wie ENTRYPOINT, das in Shell-Format und Exec-Format unterteilt werden kann. Der Rückgabewert des Befehls bestimmt, ob die Integritätsprüfung erfolgreich ist oder nicht: 0: Erfolg; 1: Fehler; 2: reserviert, verwenden Sie diesen Wert nicht. Schauen wir uns diese Dockerfile-Datei an VON centos LABEL-Betreuer „awen Email: <[email protected]>“ ARBEITSVERZEICHNIS /opt/ KOPIEREN CentOS7-Base-163.repo /etc/yum.repos.d/CentOS-Base.repo KOPIEREN Sie nginx /etc/init.d/nginx ENV NGINX_V=1.13.5 \ OPENSSL_V=1.0.2l \ PCRE_V=8,41 \ ZLIB_V=1.2.11 Führen Sie den Befehl yum -y update \ aus. && yum -y installiere OpenSSH-Server, OpenSSL, GCC, GCC-C++, PCRE-Entwicklung, OpenSSL-Entwicklung, Zlib-Entwicklung, wget, make perl, tar, net-tools \ && wget -c -4 https://nginx.org/download/nginx-$NGINX_V.tar.gz \ && wget -c -4 https://www.openssl.org/source/openssl-$OPENSSL_V.tar.gz \ && wget -c -4 ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-$PCRE_V.tar.gz \ && wget -c -4 http://zlib.net/zlib-$ZLIB_V.tar.gz \ && Gruppenzuordnung -r www && Benutzerzuordnung -r -g www www \ && tar zxvf zlib-$ZLIB_V.tar.gz \ && cd zlib-$ZLIB_V \ && ./konfigurieren \ && machen \ && make install \ && cd /opt \ && tar zxvf pcre-$PCRE_V.tar.gz \ && cd pcre-$PCRE_V \ && ./konfigurieren \ && machen \ && make install \ && cd /opt \ && tar zxvf openssl-$OPENSSL_V.tar.gz \ && tar zxvf nginx-$NGINX_V.tar.gz \ && cd nginx-$NGINX_V \ && ./configure --prefix=/usr/local/nginx --user=www --group=www --with-pcre=/opt/pcre-$PCRE_V --with-http_ssl_module --with-zlib=/opt/zlib-$ZLIB_V --with-openssl=/opt/openssl-$OPENSSL_V --with-http_v2_module --with-http_ssl_module \ && machen \ && make install \ && rm -rf /opt/* \ && mkdir -p /usr/local/nginx/ssl \ && mkdir -p /usr/local/nginx/conf/vhost \ && mkdir -p /var/log/wwwlogs/ \ && mkdir -p /www/ \ && ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N '' \ && ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key -N '' \ && ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N '' \ && ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key -N '' \ && echo "RSAAuthentication yes" >> /etc/ssh/sshd_config \ && echo "PubkeyAuthentication ja" >> /etc/ssh/sshd_config \ && sed -i "s/PasswordAuthentication yes/PasswordAuthentication no/g" /etc/ssh/sshd_config \ && sed -i "s/UsePAM ja/UsePAM nein/g" /etc/ssh/sshd_config \ && sed -i "s/#Port 22/Port 65422/g" /etc/ssh/sshd_config \ && yum alles reinigen \ && mkdir /var/run/sshd \ && chmod +x /etc/init.d/nginx \ && rm -rf /root/*.cfg \ && echo "Asien/Shanghai" > /etc/lokale Zeit KOPIEREN ssl/* /usr/local/nginx/ssl/ KOPIEREN vhost/* /usr/local/nginx/conf/vhost/ KOPIEREN Sie nginx.conf /usr/local/nginx/conf/ KOPIEREN ssh/* /root/.ssh/ VOLUME ["/www", "/var/log/wwwlogs", "/usr/local/nginx/ssl", "/usr/local/nginx/conf/vhost"] AUSLEGEN 65422 80 443 GESUNDHEITSCHECK CMD curl -fs http://localhost/ || Ausfahrt 1 EINSTIEGSPUNKT /etc/init.d/nginx start && chown -R www:www /var/log/wwwlogs/ && /usr/sbin/sshd -D In GESUNDHEITSCHECK CMD curl -fs http://localhost/ || Ausfahrt 1 Es handelt sich um die hinzugefügte Konfiguration zur Integritätsüberwachung, die dann kompiliert und gestartet wird. Wenn Sie den Prozess überprüfen, werden Sie feststellen, dass sein Status „Starten“ lautet. [root@aliyun ~]# docker ps -a CONTAINER ID BILD BEFEHL ERSTELLT STATUS PORTS NAMEN 7714a84063ee 677 "/bin/sh -c '/etc/ini" vor 3 Sekunden. 2 Sekunden aktiv (Gesundheit: wird gestartet) 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp, 0.0.0.0:65423->65422/tcp Blog Warten Sie einen Moment und Sie werden feststellen, dass sein Status gesund ist [root@aliyun ~]# docker ps -a CONTAINER ID BILD BEFEHL ERSTELLT STATUS PORTS NAMEN 7714a84063ee 677 "/bin/sh -c '/etc/ini" Vor etwa einer Minute Aktiv Vor etwa einer Minute (fehlerfrei) 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp, 0.0.0.0:65423->65422/tcp Blog Wir können den Status der letzten drei Male durch Inspect einsehen [root@aliyun ~]# docker inspect --format '{{json .State.Health}}' blog | python -m json.tool { "FailingStreak": 0, "Protokoll": [ { "Ende": "2017-10-11T11:15:27.516562686+08:00", "ExitCode": 0, "Ausgabe": "<html>\r\n<head><title>301 dauerhaft verschoben</title></head>\r\n<body bgcolor=\"white\">\r\n<center><h1>301 dauerhaft verschoben</h1></center>\r\n<hr><center>nginx</center>\r\n</body>\r\n</html>\r\n", "Start": "2017-10-11T11:15:27.470554485+08:00" }, { "Ende": "2017-10-11T11:15:57.563377729+08:00", "ExitCode": 0, "Ausgabe": "<html>\r\n<head><title>301 dauerhaft verschoben</title></head>\r\n<body bgcolor=\"white\">\r\n<center><h1>301 dauerhaft verschoben</h1></center>\r\n<hr><center>nginx</center>\r\n</body>\r\n</html>\r\n", "Start": "2017-10-11T11:15:57.516690754+08:00" }, { "Ende": "2017-10-11T11:16:27.609685416+08:00", "ExitCode": 0, "Ausgabe": "<html>\r\n<head><title>301 dauerhaft verschoben</title></head>\r\n<body bgcolor=\"white\">\r\n<center><h1>301 dauerhaft verschoben</h1></center>\r\n<hr><center>nginx</center>\r\n</body>\r\n</html>\r\n", "Start": "2017-10-11T11:16:27.563533362+08:00" }, { "Ende": "2017-10-11T11:16:57.654441173+08:00", "ExitCode": 0, "Ausgabe": "<html>\r\n<head><title>301 dauerhaft verschoben</title></head>\r\n<body bgcolor=\"white\">\r\n<center><h1>301 dauerhaft verschoben</h1></center>\r\n<hr><center>nginx</center>\r\n</body>\r\n</html>\r\n", "Start": "2017-10-11T11:16:57.609810588+08:00" }, { "Ende": "2017-10-11T11:17:27.701113019+08:00", "ExitCode": 0, "Ausgabe": "<html>\r\n<head><title>301 dauerhaft verschoben</title></head>\r\n<body bgcolor=\"white\">\r\n<center><h1>301 dauerhaft verschoben</h1></center>\r\n<hr><center>nginx</center>\r\n</body>\r\n</html>\r\n", "Start": "2017-10-11T11:17:27.654580727+08:00" } ], "Status": "gesund" } Wenn die Integritätsprüfung über die Anzahl der Wiederholungsversuche hinaus kontinuierlich fehlschlägt, ändert sich der Status in „(fehlerhaft)“. Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird. Das könnte Sie auch interessieren:
|
Inhaltsverzeichnis Spielautomaten Was sind Slots?...
## 1 Ich lerne gerade die Docker-Bereitstellung u...
Während der normalen Projektentwicklung, wenn die...
Inhaltsverzeichnis Vorwort: Was ist ein Wasserfal...
Inhaltsverzeichnis 1. Einführung in FastDFS 1. Ei...
Frage: Bei der Entwicklung des Alice-Verwaltungss...
In diesem Artikel wird der spezifische Code der L...
Als Erstes müssen Sie einen guten Browser auswähl...
Standardmäßig werden Breite und Höhe der Kopfzeil...
Code kopieren Der Code lautet wie folgt: <!DOC...
Ich habe gerade angefangen, React für Projekte zu...
Das mobile Vue-Terminal bestimmt die Richtung, in...
Inhaltsverzeichnis 1. Docker installieren 2. Zieh...
Effektbild (wenn Sie ein Dreieck wünschen, klicke...
Inhaltsverzeichnis Vorwort Was ist VueUse Einfach...