簡體   English   中英

將主機中的數據管道傳輸到Docker容器命令不適用於Docker計算機

[英]Piping data from the host into docker container command not working with docker machine

我正在使用docker-machine托管的Windows 10上運行Docker。 我正在嘗試使用以下命令通過``docker run''將主機中的數據管道傳輸到容器生成中:

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

我希望該命令將“ test”輸出到stdout,但是它所做的只是打印一個空行:

jannis MINGW64 ~
$ echo test | docker run -i ubuntu:16.04 cat -

jannis MINGW64 ~
$

但是,當我ssh進入docker-machine時,命令按預期工作:

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
docker@default:~$ echo test | docker run -i ubuntu:16.04 cat -
test

有人可以告訴我:

  1. 為什么用管道輸送到docker-machine內的容器中不起作用? 這是錯誤嗎?
  2. 是否有解決方法(除了上面提供的方法-ssh到docker-machine VM中)?

PS我使用GitBash環境 (基於MSYS2 / MINGW我的Windows 10的機器上)。 版本信息:

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

編輯2-11-2017

原來我正在使用的終端( ConEmu )有問題。 或者更確切地說,專用於ConEmu的Docker代碼庫中的特殊情況

按照此注釋中建議的解決方法,我設法使管道工作:

解決方法是,禁用ConEmu Settings -> Features -> ANSI and xterm sequences對我有幫助。

相關鏈接:

原始答案

我在docker docker-machine的issuetracker中發布了一個錯誤 ,我們將看看他們怎么說。

目前,我已經解決了。 我正在保存要通過管道傳輸到本地文件的有效負載,然后使用docker cp將文件傳輸到容器中,然后將其通過管道本地傳輸到容器中。

總結一下:

我想做的但與docker-machine不兼容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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM