2017-02-20 6 views
1

たとえば、CMD Dockerfileオプションで定義されているcat(またはstdinを使用する他のプロセス)のドッカーコンテナを実行しています。dockerコンテナ内で文字列を実行中のプロセスに送ることはできますか?

文字列test\ncat(または他のプロセス)に送信しようとしています。

これを行うことは可能ですか、回避策を見つける必要がありますか?

サムアップ: 私はコンテナを実行しているため echo 'test' | docker run -i --rm alpine command のようなものを探しています。

答えて

2

私には、例えば、単純に添付ドッカするSTDINをpipeingことによってそれを解決:

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

と別の用語で

$ echo test | docker attach <containerId>

1

はい例として、前のリンクから

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

を抽出し、ポートを開く必要があり、今、あなたはこれらのポート を用いた通信の例をいくつか持っている

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

を見ますトレースを送信してTCPポートを開く

$ ping 8.8.4.4 | nc -v 192.168.99.100 8182 

またはUDPポートのnetcat

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

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

またはnetcat

せずにTCPポートにトレースを送信せずに

$ ping 8.8.8.8 | nc -vu 192.168.99.100 9192 

またはUDPポートへのトレースを送信するためにトレースを送ります

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

またはあなたが-iでコンテナを起動する場合は、コンテナのプロセスのstdinnetcat

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

をだから、 '-Xようにそれを行うことは可能ではありません'' screen 'のパラメータ? Ex。'$ screen -S -X ' – Papkie

+0

コンテナ内にシェルを入れたい場合はdocker execを参照してください。https://docs.docker.com/engine/reference/commandline/exec/コンテナにXが必要な場合は、いくつかのものをインストールするには、たとえばhttp://fabiorehm.com/blog/2014/09/11/running-gui-apps-with-docker/ – user2915097

+0

を参照してください。Nah、私は容器の中にシェルを置いてはいけません。 'CMD' Dockerfile属性で定義された実行中のプロセスに文字列を送りたいと思います。 – Papkie

2

なしUDPポートに配管をトレースをすることができ送ります。例えば; コンテナの起動時に

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

これが行われていることを、覚えておいてください。あなたの質問はcatと言われています。これは長い実行プロセスではないので、catが完了した後にコンテナが実際に終了します。

+0

私は '-i'パラメータについて知っています。私はこのようなものを探しています。 'cat'は入力を受け付ける例です – Papkie

関連する問題