2017-02-20 5 views
1

Zum Beispiel habe ich laufenden docker Container mit cat (oder anderen Prozess mit stdin) in CMD Dockerfile Option definiert.Ist es möglich, einen String in den laufenden Prozess innerhalb des Dockercontainers zu senden?

Ich versuche, Zeichenfolge test\n in laufenden cat (oder anderen Prozess) zu senden.

Ist es möglich, dies zu tun, oder muss ich eine Problemumgehung finden?

Sum up: Ich suche nach etwas wie echo 'test' | docker run -i --rm alpine command für Behälter läuft.

Antwort

2

ich es einfach pipeing stdin heften sich an Andockfenster gelöst, zum Beispiel:

$ docker run -i busybox sh -c "while true; do cat /dev/stdin; sleep 1; done;" test

und in einem anderen Begriff

$ echo test | docker attach <containerId>

1

Ja als Beispiel siehe

https://github.com/chilcano/docker-netcat

Sie benötigen einen Port zu öffnen, Auszug aus dem vorherigen Link

$ docker run -d -t --name=netcat-jessie -p 8182:8182 -p 9192:9192/udp chilcano/netcat:jessie 

und jetzt haben Sie einige Beispiele für die Kommunikation der Ports mit Traces zum Öffnen eines TCP-Ports senden

$ ping 8.8.4.4 | nc -v 192.168.99.100 8182 

oder Spuren auf einen UDP Port

$ ping 8.8.8.8 | nc -vu 192.168.99.100 9192 

oder senden Spuren an einem UDP-Port ohne netcat

$ ping 8.8.4.4 > /dev/udp/192.168.99.100/9192 

und

$ tail -f /opt/wiremock/wiremock.log | nc -vu 192.168.99.100 9192 

oder senden Spuren zu einem TCP-Port ohne netcat

senden
$ tail -f /opt/wso2esb01a/repository/logs/wso2carbon.log > /dev/tcp/192.168.99.100/8182 

oder Spuren an einen UDP-Port senden, ohne netcat

$ tail -f /opt/wso2am02a/repository/logs/wso2carbon.log > /dev/udp/192.168.99.100/9192 
+0

So ist es nicht möglich, sie wie 'X zu tun 'Parameter in' Bildschirm'? Bsp.'$ screen -S -X ' – Papkie

+0

siehe docker exec, wenn Sie eine Shell in einem Container wollen https://docs.docker.com/engine/reference/commandline/exec/ wenn Sie X in einem Container wollen, haben Sie um ein paar Dinge zu installieren, siehe zum Beispiel http://fabiorehm.com/blog/2014/09/11/running-gui-apps-with-docker/ – user2915097

+0

Nein, ich möchte keine Shell in einem Container. Ich möchte eine Zeichenfolge in den laufenden Prozess senden, der im 'CMD'-Dockerfile-Attribut definiert ist. – Papkie

2

Sie können Rohr stdin des Prozesses des Containers, wenn der Container mit -i starten. Beispielsweise;

echo "foobar" | docker run -i --rm alpine cat 

Denken Sie daran, dass dies geschehen wird, wenn der Behälter beginnt. Ihre Frage erwähnt cat, die kein langwieriger Prozess ist, so wird der Container tatsächlich beendet, nachdem cat abgeschlossen ist.

+0

Ich weiß über '-i' Parameter, und ich bin auf der Suche nach etwas für den laufenden Container. 'cat' ist nur ein Beispiel, das Eingaben akzeptiert – Papkie

Verwandte Themen