2017-08-22 13 views
0

docker-machineを使用してホストされているWindows 10上でDockerを実行しています。私はstdoutに出力する「テスト」には、このコマンドを期待ホストからのデータをdockerマシンで動作しないdocker containerコマンドにパイプする

echo test | docker run -i ubuntu:16.04 cat - 

が、それがないすべてのプリントである:私は、このコマンドを使用して、「ドッカラン」でコンテナ産卵にホストからのパイプデータにしようとしています空白行:

​​

しかし、予想通り、私はドッキングウィンドウ-マシンにコマンドの動作をsshをするとき:

jannis MINGW64 ~ 
$ docker-machine ssh 
         ##   . 
        ## ## ##  == 
       ## ## ## ## ## === 
      /"""""""""""""""""\___/ === 
     ~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~/===- ~~~ 
      \______ o   __/ 
      \ \   __/ 
       \____\_______/ 
_     _ ____  _   _ 
| |__ ___ ___ | |_|___ \ __| | ___ ___| | _____ _ __ 
| '_ \/_ \/_ \| __| __)/_` |/ _ \/__| |//_ \ '__| 
| |_) | (_) | (_) | |_/__/ (_| | (_) | (__| < __/ | 
|_.__/ \___/ \___/ \__|_____\__,_|\___/ \___|_|\_\___|_| 
Boot2Docker version 17.06.1-ce, build HEAD : 80114bc - Fri Aug 18 17:58:04 UTC 2017 
Docker version 17.06.1-ce, build 874a737 
[email protected]:~$ echo test | docker run -i ubuntu:16.04 cat - 
test 

誰かが私に言うことができる:

  1. ドッカーマシン内のコンテナへの配管が機能しないのはなぜですか?これはバグですか?
  2. これには回避策がありますか(上で提供されている - sshをドッカーマシンのVMに入れたものを除きます)?私は私のWindows 10マシン上で(MSYS2/MINGWに基づく)GitBash environmentを使用してい

PS。バージョン情報:

jannis MINGW64 ~ 
$ uname -a 
MINGW64_NT-10.0 jannis 2.6.1(0.306/5/3) 2017-01-14 09:41 x86_64 Msys 

jannis MINGW64 ~ 
$ docker version 
Client: 
Version:  17.06.0-ce 
API version: 1.30 
Go version: go1.8.3 
Git commit: 02c1d87 
Built:  Fri Jun 23 21:30:30 2017 
OS/Arch:  windows/amd64 

Server: 
Version:  17.06.1-ce 
API version: 1.30 (minimum version 1.12) 
Go version: go1.8.3 
Git commit: 874a737 
Built:  Thu Aug 17 22:54:55 2017 
OS/Arch:  linux/amd64 
Experimental: false 
+1

一つのことは、Gitのバッシュをインストールしています、そしてGit bash内部で試してみてください。 –

+0

@TarunLalwaniこれはGitBashです。私は自分の投稿を編集します。 – jannis

+0

@ TarunLalwani最後に、あなたのヒントは私がこの問題を解決するのを助けました。 ** raw ** GitBashコンソール(ConEmu経由ではない)でコマンドを実行すると、私は根本的な原因を釘付けにしました。詳細は私の編集された答えを見てください – jannis

答えて

0

EDIT 2017年2月11日

は、それは私が使用している端子(ConEmu)との問題だったが判明します。また、ConEmu専用のDockerのコードベースで、より正確にはspecial caseになるようにしてください。回避策として

ConEmu Settings -> Features -> ANSI and xterm sequencesは私を助け無効:この問題を回避するに続いて

は、私は配管作業を行うために管理this commentで提案されています。

関連リンク:

ORIGINAL ANSWER

私はのissuetrackerにa bugを投稿しました。彼らの言うことがわかります。

現在、私は回避策をとっています。私はローカルファイルにパイプされたペイロードを保存してから、ファイルをdocker cpでコンテナに転送し、次にコンテナ内でローカルにパイプします。

まとめると:

を私がやりたいとdocker-machineでは動作しませんどのようなことです:代わりに

echo piped content | docker run -i ubuntu:16.04 cat - 

私はこれを行う:

jannis MINGW64 ~ 
$ docker create --name test-container ubuntu:16.04 sh -c 'cat - < /tmp/emulatedpipe' 
a6eaf1e5f143113bcffa9df66a47b37c124cd34447b670480b5f096d45b7b162 

jannis MINGW64 ~ 
$ echo piped content > emulatedpipe 

jannis MINGW64 ~ 
$ docker cp emulatedpipe test-container:/tmp 

jannis MINGW64 ~ 
$ docker start -i test-container 
piped content