Multiservice-Image-Packaging-Vorgang von Dockerfile unter Aufsicht

Multiservice-Image-Packaging-Vorgang von Dockerfile unter Aufsicht

Schreiben einer Docker-Datei

Konfigurieren Sie die Yum-Quelle

cd /tmp/docker
vim Docker-Datei
VON rhel7
EXPOSE 80 22 # Ports 80 und 22 der Außenwelt zugänglich machen COPY dvd.repo /etc/yum.repos.d/dvd.repo
&& yum install -y httpd openssh-server openssh-clients supervisor
&& yum alles reinigen 
&& ssh-keygen -q -t rsa -f /etc/ssh/ssh_host_rsa_key -N "" 
&& ssh-keygen -q -t ecdsa -f /etc/ssh/ssh_host_ed25519_key -N "" 
&& echo root:redhat | chpasswd
KOPIEREN Sie supervisord.conf /etc/supervisord.conf
CMD ["/usr/bin/supervisord"]
vim supervisord.conf
[Vorgesetzter]
nodaemon=wahr

[Programm:sshd]
Befehl=/usr/sbin/sshd -D

[Programm:httpd]
Befehl=/usr/sbin/httpd
Docker-Build -t rhel7:v3
Senden des Build-Kontexts an den Docker-Daemon 8.192 kB
Schritt 1/6: VON rhel7
 ---> 0a3eb3fde7fd
Schritt 2/6: EXPOSE 80 22
 ---> Wird ausgeführt in 5727c9e984a5
 ---> e25a8a0821f7
Zwischenbehälter entfernen 5727c9e984a5
Schritt 3/6: KOPIEREN Sie dvd.repo /etc/yum.repos.d/dvd.repo
 ---> 2d9e8f9648a7
Zwischenbehälter ausbauen 62955f7a7a74
Schritt 4/6: FÜHREN Sie rpmdb --rebuilddb aus und yum install -y httpd openssh-server openssh-clients supervisor und yum clean all und ssh-keygen -q -t rsa -f /etc/ssh/ssh_host_rsa_key -N "" und ssh-keygen -q -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N "" und ssh-keygen -q -t ecdsa -f /etc/ssh/ssh_host_ed25519_key -N "" und echo root:redhat | chpasswd
Abhängigkeit aktualisiert:
 elfutils-libelf.x86_64 0:0.166-2.el7                     

Vollständig!
Nicht lesbares Repository „///etc/yum.repos.d/rhel7.repo“ wird übersprungen
Bereinigen von Repositorys: Docker DVD-Rhel
Alles aufräumen
 ---> 1cb2f9e34bac
Zwischenbehälter entfernen 33cb452dbc8d
Schritt 5/6: KOPIEREN Sie supervisord.conf /etc/supervisord.conf
 ---> e8de2ff5ca3c
Zwischenbehälter entfernen f219cb2b6a88
Schritt 6/6: CMD /usr/bin/supervisord
 ---> Wird ausgeführt in eddfb3973ad2
 ---> dbf4cf5cb116
Zwischenbehälter entfernen eddfb3973ad2
Erfolgreich erstellt dbf4cf5cb116

docker run -d --name vm1 -v /tmp/docker/web/:/var/www/html rhel7:v3

Docker PS

Docker-Inspektion vm1
      "Netzwerke": {
        "Brücke": {
          "IPAMConfig": null,
          "Links": null,
          "Aliase": null,
          "NetworkID": "126902125dd9c54631622845c1a75d656b45023840c57944ec24f4acecf6dc3f",
          "EndpointID": "3d995f01fce91968f59b151a19ba3868292efe0a61c2ef355bcd1eb84bda7248",
          "Gateway": "172.17.0.1",
          "IPAddress": "172.17.0.2", # IP des Containers
          "IPPrefixLen": 16,
          "IPv6Gateway": "",
          "GlobalIPv6Address": "",
          "GlobalIPv6PrefixLen": 0,
          "MacAdresse": "02:42:ac:11:00:02"
        }
      }

verifizieren:

Locken 172.17.0.2

Überprüfen Sie den SSHD-Dienst:

Ergänzendes Wissen: Verwenden Sie Dockerfile, um ein Supervisor-Container-Bereitstellungsprojekt zu erstellen. Die Ausführung von CMD ["supervisord", "-c", "/etc/supervisord.conf"] ist fehlgeschlagen

Problembeschreibung:

Beim Schreiben einer Docker-Datei zum Erstellen eines Supervisor-Containers funktioniert der letzte Befehl zum Starten des Supervisors nicht -> CMD ["supervisord","-c","/etc/supervisord.conf"], aber die Ausführung von supervisord -c /etc/supervisord.conf innerhalb des Containers kann erfolgreich ausgeführt werden.

Fügen Sie zuerst den Dockerfile-Dateicode ein

VON python:latest 
ARBEITSVERZEICHNIS /root/
 
Führen Sie mkdir /etc/supervisor aus.
RUN mkdir -p /root/projects/logs/gunicorn/
RUN mkdir -p /root/projects/logs/celery/
RUN mkdir -p /root/projects/Sy_EvaluateJkApi/logs/
RUN echo "deb http://mirrors.aliyun.com/debian/ buster main non-free contrib" > /etc/apt/sources.list
RUN echo "deb-src http://mirrors.aliyun.com/debian/ buster main non-free contrib" >> /etc/apt/sources.list
RUN echo "deb http://mirrors.aliyun.com/debian-security buster/updates main" >> /etc/apt/sources.list
RUN echo "deb-src http://mirrors.aliyun.com/debian-security buster/updates main" >> /etc/apt/sources.list
RUN echo "deb http://mirrors.aliyun.com/debian/ buster-updates main non-free contrib" >> /etc/apt/sources.list
RUN echo "deb-src http://mirrors.aliyun.com/debian/ buster-updates main non-free contrib" >> /etc/apt/sources.list
RUN echo "deb http://mirrors.aliyun.com/debian/ buster-backports main non-free contrib" >> /etc/apt/sources.list
RUN echo "deb-src http://mirrors.aliyun.com/debian/ buster-backports main non-free contrib" >> /etc/apt/sources.list
Führen Sie apt-get update -y aus.
Führen Sie apt-get install -y git lrzsz vim aus.
Führen Sie „pip install supervisor -i“ aus: https://mirrors.aliyun.com/pypi/simple/
Führen Sie „pip install gunicorn -i“ aus: https://mirrors.aliyun.com/pypi/simple/
Führen Sie „pip install gevent -i“ aus: https://mirrors.aliyun.com/pypi/simple/
RUN /usr/local/bin/echo_supervisord_conf > /etc/supervisord.conf
RUN echo "[include]">>/etc/supervisord.conf
RUN echo "Dateien = /etc/supervisor/*.ini">>/etc/supervisord.conf
 
ADD sy.ini /etc/supervisor/sy.ini
HINZUFÜGEN Sy_EvaluateJkApi /root/projects/Sy_EvaluateJkApi
Führen Sie den Befehl pip3 install -r /root/projects/Sy_EvaluateJkApi/requirements.txt -i https://mirrors.aliyun.com/pypi/simple/ aus.
EXPOSE 8800
CMD ["supervisord","-c","/etc/supervisord.conf"]

Beim Erstellen des Container-Images mit dem Befehl „docker build -t system:test“ tritt keine Ausnahme auf. Beim Ausführen des Containers mit „docker run -itd system:test“ wird jedoch angezeigt, dass der Container nicht ausgeführt wird.

Lösung:

Ändern Sie den Befehl CMD ["supervisord","-c","/etc/supervisord.conf"] in CMD ["supervisord","-n","-c","/etc/supervisord.conf"] und er wird erfolgreich ausgeführt.

Dies ist, was in Supervisor -n/--nodaemon -- im Vordergrund laufen geschrieben wird (dasselbe wie „nodaemon=true“ in der Konfigurationsdatei). Durch Hinzufügen von -n kann Supervisor weiterhin im Vordergrund laufen.

Der obige Multiservice-Image-Packaging-Vorgang von Dockerfile unter Supervisor ist der gesamte Inhalt, den der Editor mit Ihnen teilt. Ich hoffe, er kann Ihnen als Referenz dienen. Ich hoffe auch, dass Sie 123WORDPRESS.COM unterstützen.

Das könnte Sie auch interessieren:
  • Schritte zum Erstellen eines Docker-Images mit Dockerfile
  • So erstellen Sie ein Apache-Image mit Dockerfile
  • Docker-Image erstellen Dockerfile und Commit-Operationen
  • So erstellen Sie ein Tomcat-Image basierend auf Dockerfile
  • So passen Sie Docker-Images mit Dockerfile an
  • Detaillierte Erläuterung des Dockerfiles zum Erstellen eines benutzerdefinierten Docker-Images und Vergleich der CMD- und ENTRYPOINT-Anweisungen
  • Implementierung eines Tomcat-Images, das mit Dockerfile basierend auf Alpine erstellt wurde
  • Implementierung eines Crawler-Scrapy-Image, das von Dockerfile basierend auf Alpine erstellt wurde
  • So erstellen Sie Ihr eigenes Image mit Dockerfile
  • Erstellen Sie ein Docker-Image mit Dockerfile

<<:  InnerHTML verstehen

>>:  Zwei Lösungen zum automatischen Hinzufügen von 0 zum Datum und zur Uhrzeit im regulären JS-Format

Artikel empfehlen

Eine einfache Methode zum Ändern der Größe hochgeladener Nginx-Dateien

Originallink: https://vien.tech/article/138 Vorwo...

CentOS 7 SSHD ändern | Root-Login und SSHD-Port-Skriptdefinition verbieten

1. Erstellen Sie einen neuen Benutzer wwweee000 [...

Detaillierte Zusammenfassung der Übermittlungsmethoden für Webformulare

Sehen wir uns zunächst verschiedene Möglichkeiten...

Vier Lösungen für die Verwendung von setTimeout in JS for-Schleifen

Inhaltsverzeichnis Überblick Lösung 1: Verschlüss...

Zusammenfassung häufig verwendeter MySQL-Befehle im Linux-Betriebssystem

Hier sind einige gängige MySQL-Befehle für Sie: -...

Mysql praktische Übungen einfaches Bibliotheksverwaltungssystem

Inhaltsverzeichnis 1. Sortierfunktion 2. Vorberei...

Lassen Sie uns im Detail darüber sprechen, wie Browser Abschlüsse betrachten

Inhaltsverzeichnis Vorwort Einführung in Closures...

Eine andere Art von „Abbrechen“-Button

Der „Abbrechen“-Button ist nicht Teil des notwend...

Ist MySQL eine relationale Datenbank?

MySQL ist ein relationales Datenbankverwaltungssy...

Einführung und Verwendung von fünf Controllern in K8S

Inhaltsverzeichnis Controllertyp von k8s Beziehun...