同时键入两个字母会导致docker exec -it shell突然退出

dwj*_*ton 6 shell docker docker-toolbox

我正在Windows 10上的VirtualBox上运行Docker Toolbox.

我有一个恼人的问题,如果我docker exec -it mycontainer sh进入一个容器 - 检查的东西,shell会突然退出到主机shell,而我正在键入命令.一些实验表明,当我同时按下两个字母时(触摸打字时常见)导致退出.

容器仍将运行.

有什么想法是什么?

更多细节

这是我在里面运行的最小的docker图像.本质上,我正在尝试通过kops将kubernetes集群部署到AWS,但由于我在Windows上,我必须使用容器来运行kops命令.

FROM alpine:3.5

#install aws-cli
RUN apk add --no-cache \
  bind-tools\
  python \
 python-dev \
 py-pip \
 curl


RUN pip install awscli 

#install kubectl
RUN curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl
RUN chmod +x ./kubectl
RUN mv ./kubectl /usr/local/bin/kubectl


#install kops
RUN curl -LO https://github.com/kubernetes/kops/releases/download/$(curl -s https://api.github.com/repos/kubernetes/kops/releases/latest | grep tag_name | cut -d '"' -f 4)/kops-linux-amd64
RUN chmod +x kops-linux-amd64
RUN mv kops-linux-amd64 /usr/local/bin/kops
Run Code Online (Sandbox Code Playgroud)

我建立这个图像:

docker build -t mykube . 
Run Code Online (Sandbox Code Playgroud)

我在我正在尝试部署的项目的工作目录中运行它:

docker run -dit -v "${PWD}":/app mykube
Run Code Online (Sandbox Code Playgroud)

exec进入shell:

docker exec -it $containerid sh 
Run Code Online (Sandbox Code Playgroud)

在shell中,我开始按照此处运行AWS命令.

这是一些示例输出:

##output of previous dig command 
;; Query time: 343 msec
;; SERVER: 10.0.2.3#53(10.0.2.3)
;; WHEN: Wed Feb 14 21:32:16 UTC 2018
;; MSG SIZE  rcvd: 188

##me entering a command
/ # aws s3 mb s3://clus
##shell exits abruptly to host shell while I'm writing
DavidJ@DavidJ-PC001 MINGW64 ~/git-workspace/webpack-react-express (master)
##container is still running 
$ docker ps --all
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
37a341cfde83        mykube              "/bin/sh"           5 minutes ago       Up 3 minutes                            gifted_bhaskara
##nothing in docker logs
$ docker logs --details 37a341cfde83
Run Code Online (Sandbox Code Playgroud)

更有用的更新

添加-D标志提供了一个重要线索:

$ docker -D exec -it  04eef8107e91 sh -x
DEBU[0000] Error resize: Error response from daemon: no such exec
                                                                  / #
/ #
/ #
/ #
/ # sdfsdfjskfdDEBU[0006] [hijack] End of stdin
DEBU[0006] [hijack] End of stdout
Run Code Online (Sandbox Code Playgroud)

另外,我已经确定了导致问​​题的具体原因是同时按两个字母(这在我触摸打字时很常见).

这里似乎有一个github问题,虽然这个是针对windows的docker而不是docker工具箱.

dwj*_*ton 3

这个问题似乎是 docker 和 windows 的一个错误。请参阅此处的 github 问题。

作为解决方法,请在docker exec命令前面加上 winpty,它是 git bash 附带的。

例如。

winpty docker exec -it mycontainer sh
Run Code Online (Sandbox Code Playgroud)