[LINUX] Geben Sie in stdin den laufenden Docker-Container ein

Überblick

Hallo, das ist Haniokasai. Wenn Docker mit Docker verbunden wird, kann nur PID 1 interaktiv betrieben werden. [^ 1] Normalerweise ist das kein Problem, aber ich bin in Schwierigkeiten. In meinem Container ruft Dockerfile ein Shell-Skript auf, das PHP CGI ausführt. In diesem Fall gibt es keine Möglichkeit, es einzugeben, da die PID von PHP nicht 1 ist. (Sie können die Ausgabe mit Anhängen sehen.) Also habe ich es direkt in stdin eingegeben.

Umgebung

Host zum Container stdin

Hinweis Sie können Docker anhängen, aber nicht interaktiv gestalten. In diesem Fall gibt stdin "Textdatei beschäftigt" zurück und hält nicht. Gehen Sie beim Anbringen wie folgt vor. (In diesem Fall erhält "Anhängen" nicht stdin. Sie können entweder "Anhängen" oder "Direkte Dateieingabe" auswählen.)

attach


docker -H DOCKERHOST Container-Namen anhängen--no-stdin

Überprüfen Sie zunächst die PID des Standardeingabeziels oben.

# docker top zzzzzzzz_container
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                25312               25287               0                   16:09               ?                   00:00:00            /bin/sh -c sh /minecraft/resources/run-Main.sh
root                25366               25312               0                   16:10               ?                   00:00:00            sh /minecraft/resources/run-Main.sh
root                25434               25366               0                   16:10               ?                   00:00:00            sh /minecraft/resources/run-BE-BDS.sh
root                25472               25434               13                  16:10               ?                   00:14:22            /minecraft/bin/bedrock_server

Führen Sie die Standardeingabe mit einem Befehl aus

# echo "help" > /proc/25472/fd/0

Wenn Sie standardmäßig Hilfe in bedrock_server eingeben, wird die Hilfe ordnungsgemäß zurückgegeben.

# docker logs zzzzzzzz_container --tail=10
[2019-12-15 08:09:39 INFO] Player disconnected: hanicraft, xuid: 2535460621431466
§2--- Showing help page 1 of 18 (/help <page>) ---
/? [command: CommandName]
/? <page: int>
/alwaysday [lock: Boolean]
/changesetting allow-cheats <value: Boolean>
/changesetting difficulty <value: Difficulty>
/changesetting difficulty <value: int>
/clear [player: target] [itemName: Item] [data: int] [maxCount: int]
§2Tip: Use the <tab> key while typing a command to auto-complete the command or its arguments

Container zu Container stdin

Quellcontainer erstellen

docker create --Name Containername--memory=3500mb --network="host" --storage-opt size=2G  --cap-add SYS_PTRACE  -v /proc:/newproc:ro

Der Punkt von Interesse ist

Der Rest ist der gleiche wie zuvor.

Im Container


# echo "help" > /newproc/25472/fd/0

Bibliothek gemacht mit

Ich habe es mit @itsu_dev geschafft. Es wird interessant sein, weil Itsukun die Oberseite kratzt.

Verweise

https://serverfault.com/questions/178457/can-i-send-some-text-to-the-stdin-of-an-active-process-running-in-a-screen-sessi https://orebibou.com/2016/04/linux%E3%81%A7%E5%8B%95%E4%BD%9C%E4%B8%AD%E3%81%AE%E3%83%97%E3%83%AD%E3%82%BB%E3%82%B9%E3%81%AE%E5%87%BA%E5%8A%9B%E5%86%85%E5%AE%B9%E3%82%92%E3%81%BF%E3%82%8B/

Fußnote

Recommended Posts

Geben Sie in stdin den laufenden Docker-Container ein
Der Tag des Dockerlaufs (Hinweis)
Treten Sie ein in die Dunkelheit von msync
Starten Sie den Docker-Container, wenn Sie Pytest ausführen
Ich habe den Inhalt des Docker-Volumes überprüft
Grundlagen zum Ausführen von NoxPlayer in Python
Ich war in Schwierigkeiten, weil sich das Verhalten des Docker-Containers nicht geändert hat
Hinweis: Bereiten Sie die Umgebung von CmdStanPy mit Docker vor
Bereiten Sie die Ausführungsumgebung von Python3 mit Docker vor
Teilen Sie die Zeichenfolge in die angegebene Anzahl von Zeichen
Verwenden Sie die Kaggle-API in einem Docker-Container
Fügen Sie Python3 in den Docker-Container von Amazon Linux2 ein
Ändern Sie die Auflösung von Ubuntu, das auf VirtualBox ausgeführt wird
Scraping der Gewinndaten von Zahlen mit Docker
Der Prozess der Installation von Atom und der Ausführung von Python
Finden Sie die Version der Sprache heraus, die Sie ausführen
Holen Sie sich den absoluten Pfad des laufenden Skripts
Vorbereiten der Ausführungsumgebung von PyTorch mit Docker November 2019
Lösung für unzugänglichen Gin-Server, der auf dem Docker-Container ausgeführt wird
Ich habe versucht, den Beispielcode des Ansible-Moduls auszuführen