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

So implementieren Sie verteilte Transaktionen in MySQL XA

Inhaltsverzeichnis Vorwort XA-Protokoll So implem...

IE8 Beta 1 hat zwei Bereiche, die Ihre Aufmerksamkeit erfordern

<br />Verwandte Artikel: Web-Kenntnisse: Lös...

Eine kurze Erläuterung zu „Group By“ in MySQL

Inhaltsverzeichnis 1. Einleitung 2. Bereiten Sie ...

Lösen Sie das Problem, dass Docker Elasticsearch7.x startet und einen Fehler meldet

Verwenden des Docker-Befehls „run“ docker run -d ...

Detailliertes Tutorial zur Installation des Quellcodes von CentOS6.9+Mysql5.7.18

Bei der Installation des Quellcodes von CentOS6.9...

Lösung für das img-Tag-Problem unter IE10

Finden Sie das Problem Ich habe vorher eine einfa...

Detaillierte Analyse von GUID-Anzeigeproblemen in Mongodb

Finden Sie das Problem Ich habe kürzlich den Spei...

11 Gründe, warum Bootstrap so beliebt ist

Vorwort Bootstrap, das beliebteste Front-End-Entw...

So verwenden Sie Vue zum Entwickeln öffentlicher Account-Webseiten

Inhaltsverzeichnis Projekthintergrund Start Erste...

Zusammenfassung der wichtigsten Wissenspunkte zur MySQL-Abfrageoptimierung

Vorwort Abfrageoptimierung ist nichts, was über N...

Probleme beim Erstellen von Platzhaltern für HTML-Auswahlfelder

Ich verwende einen Platzhalter in einer Texteinga...