Linux 将数据从主机管道传输到docker容器命令不适用于docker计算机

Linux 将数据从主机管道传输到docker容器命令不适用于docker计算机,linux,docker,pipe,docker-machine,Linux,Docker,Pipe,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进入doc

我正在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机器时,该命令按预期工作:

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
编辑日期:2017年11月2日 原来是我使用的终端有问题()。或者更确切地说,是Docker专门为ConEmu编写的代码库

按照中建议的解决方法,我成功地使管道工作:

作为一种解决方法,禁用
ConEmu设置->功能->ANSI和xterm序列
对我有帮助

相关链接:

  • 我在docker机器上的票:
  • ConEmu车票:
  • 码头工人票:
原始答案 我已经在docker machine的issuetracker上发布了帖子,我们看看他们怎么说

目前我已经找到了一个解决办法。我正在保存要通过管道传输到本地文件的有效负载,然后将文件传输到容器中,然后在容器中通过管道本地传输

总而言之:

我想做的和不想使用docker机器的是:

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
jannis MINGW64~
$docker create——名称测试容器ubuntu:16.04 sh-c'cat-模拟管道
詹尼斯·明威64~
$docker cp仿真管道测试容器:/tmp
詹尼斯·明威64~
$docker start-i测试容器
管道内容
2017年11月2日编辑 原来是我使用的终端有问题()。或者更确切地说,是Docker专门为ConEmu编写的代码库

按照中建议的解决方法,我成功地使管道工作:

作为一种解决方法,禁用
ConEmu设置->功能->ANSI和xterm序列
对我有帮助

相关链接:

  • 我在docker机器上的票:
  • ConEmu车票:
  • 码头工人票:
原始答案 我已经在docker machine的issuetracker上发布了帖子,我们看看他们怎么说

目前我已经找到了一个解决办法。我正在保存要通过管道传输到本地文件的有效负载,然后将文件传输到容器中,然后在容器中通过管道本地传输

总而言之:

我想做的和不想使用docker机器的是:

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
jannis MINGW64~
$docker create——名称测试容器ubuntu:16.04 sh-c'cat-模拟管道
詹尼斯·明威64~
$docker cp仿真管道测试容器:/tmp
詹尼斯·明威64~
$docker start-i测试容器
管道内容

做一件事安装Git Bash,然后在Git Bash内部尝试?@TarunLalwani这是GitBash。我将编辑我的帖子。@TarunLalwani最后你的提示帮助我解决了这个问题。在原始GitBash控制台中运行该命令(而不是通过ConEmu运行)帮助我找到了根本原因。查看我编辑过的答案,了解详细信息这些天应该有用,只需保留它-我而不是-它。只需做一件事安装Git Bash,然后在Git Bash内尝试?@TarunLalwani这是GitBash。我将编辑我的帖子。@TarunLalwani最后你的提示帮助我解决了这个问题。在原始GitBash控制台中运行该命令(而不是通过ConEmu运行)帮助我找到了根本原因。请参阅我编辑的答案以了解详细信息。这些天应该有用,只需保留它-我而不是-它。