Dockerコンテナで次のように起動されたイカエージェントを実行しています。
docker run --privileged -d --publish=3128:3128 --name foo squid
名前の異なるコンテナから情報を取得したいですbar
。
docker run --rm -it --name bar ubuntu:trusty bash
bar
コンテナで実行している場合:
nc 172.17.0.1 3128
HEAD /
その後、サーバーからいくつかの出力を取得します。しかし、これを実行すると:
echo 'HEAD /' | nc 172.17.0.1 3128
私は何も得られませんでした。なぜできないの?
答え1
それはおそらく、標準入力からファイルの終わりを受け取った直後にnetcatが終了したからです。努力する
(echo 'HEAD /'; sleep 5) | nc 172.17.0.1 3128
netcatのローカル入力をネットワークデータを読み取り、標準出力に書き込むのに十分長く開いてください。5
遅延する秒数です。
Netcatにはこの問題を解決するためのオプションがあります。負の終了タイムアウトを指定すると、stdinはEOFの後に終了するのではなく、ネットワーク接続が閉じるのを待ちます。
echo 'HEAD /' | nc -q -1 172.17.0.1 3128