Lösung für das Problem, dass Docker CMD/ENTRYPOINT das sh-Skript ausführt: nicht gefunden/run.sh:

Lösung für das Problem, dass Docker CMD/ENTRYPOINT das sh-Skript ausführt: nicht gefunden/run.sh:

Es gibt kein Problem mit der Dockerfile-Konfiguration. Warum tritt beim Ausführen des Befehls ENTRYPOINT ein Fehler auf?

Der Container wurde sofort nach dem Start beendet.

Ich habe viele Informationen überprüft und lange darüber nachgedacht, bis ich den Grund gefunden habe.

run.sh wird durch die COPY-Anweisung in den Container kopiert. Da es sich jedoch bei dem lokalen Computer um Windows handelt und das Standardzeichen für Zeilenumbrüche \n ist, kann es nach dem Kopieren nicht ausgeführt werden.

Die Lösung ist einfach: Ändern Sie einfach das Dateiformat in LF.

Zusatzwissen: Beim Starten eines Containers in Docker meldet der if-Befehl im per CMD aufgerufenen sh-Skript ein unerwartetes Symbol if[[. Lösung

Kürzlich habe ich ein Image über Dockerfile geschrieben. Das sh-Skript (start.sh) wurde in CMD aufgerufen, um den Container zu starten. Als es über Docker Run gestartet wurde, schlug der Start fehl. Ich habe Docker Logs Container ID ausgeführt und festgestellt, dass der Fehler lautete: Unerwartetes Symbol, wenn [[

Ich habe start.sh erfolgreich direkt im externen Linux-System ausgeführt. Ich bin über Docker Exec in den Container eingestiegen und habe start.sh im Container ohne Fehler aufgerufen. Alle Programme, die im Befehl gestartet werden mussten, wurden erfolgreich gestartet.

Bei der direkten Ausführung des Skripts gibt es keine Probleme, beim Docker Run tritt jedoch ein Fehler auf, was rätselhaft ist.

Der Fehlercodeabschnitt in start.sh lautet wie folgt

wenn [[ -e /home/dc/testnn-aaa.zip ]];dann
 rm -rf /home/testnn-aaa
 entpacken -q -o -d /home testnn-aaa.zip
 echo "Zip entpacken fertig" 
anders 
 echo "dc zip existiert nicht"
fi

Nach dem Überprüfen und Vergleichen stellte ich fest, dass der Unterschied zwischen den beiden Stellen darin besteht, dass das erste if ein einzelnes [] verwendet, weil meine start.sh auch eine if-Anweisung vor der Fehleranweisung hat, aber kein Fehler gemeldet wird. Wenn der Code in [] geändert wird, ist dies erfolgreich. Die Änderung lautet wie folgt:

wenn [ -e /home/dc/testnn-aaa.zip ];dann

Der obige Artikel zur Lösung des Problems, dass Docker CMD/ENTRYPOINT das sh-Skript nicht gefunden/run.sh ausführt, ist der gesamte Inhalt, den der Herausgeber mit Ihnen geteilt hat. Ich hoffe, er kann Ihnen als Referenz dienen. Ich hoffe auch, dass Sie 123WORDPRESS.COM unterstützen werden.

Das könnte Sie auch interessieren:
  • Der Unterschied zwischen ENTRYPOINT und CMD in Dockerfile
  • Verwenden Sie Nicht-Root-Benutzer, um Skriptvorgänge in Docker-Containern auszuführen
  • Docker-Dateispeicherpfad, Befehlsvorgang zum Starten des Containers abrufen

<<:  Vue-Interpretation der responsiven Prinzip-Quellcode-Analyse

>>:  HTML ist eigentlich die Anwendung zum Erlernen mehrerer wichtiger Tags

Artikel empfehlen

Lösung für den MySQL-Root-Passwortfehler Nummer 1045

MySQL-Dienst stoppen Klicken Sie in Windows mit d...

Mysql-Optimierung Zabbix-Partitionsoptimierung

Der größte Engpass bei der Verwendung von Zabbix ...

Implementierungsprozessdatensatz für benutzerdefinierte Vue-Tabellenspalten

Inhaltsverzeichnis Vorwort Rendern setTable-Kompo...

Detaillierte Erläuterung der Konzepte und Verwendung von Docker Swarm

Docker Swarm ist ein von Docker entwickelter Cont...

Beispielcode eines CSS-responsiven Layoutsystems

Responsive Layoutsysteme sind in den heute gängig...

Mysql GTID Mha-Konfigurationsmethode

Gtid + Mha + Binlog-Serverkonfiguration: 1: Testu...

Docker stellt MySQL bereit, um Beispielcode für eine Remoteverbindung zu erreichen

1. Docker durchsucht MySQL查看mysql版本 2. Docker Pul...

jQuery ermöglicht nahtloses Scrollen von Tabellen

In diesem Artikelbeispiel wird der spezifische Co...

So installieren Sie nginx unter Linux

Nginx wurde in der Programmiersprache C entwickel...

Zusammenfassung der grundlegenden Wissenspunkte der Linux-Gruppe

1. Grundlegende Einführung in die Linux-Gruppe Un...