接受用户输入的Docker Compose运行崩溃;“断管”;

接受用户输入的Docker Compose运行崩溃;“断管”;,docker,docker-compose,Docker,Docker Compose,我在Django环境中使用Docker,但当我运行类似于Docker compose run web bash的命令时,bash加载后键入的任何内容都不会显示,然后进程最终会因以下错误而终止: Traceback (most recent call last): File "/usr/local/Cellar/fig/1.3.3/libexec/bin/docker-compose", line 9, in <module> load_entry_point('docke

我在Django环境中使用Docker,但当我运行类似于
Docker compose run web bash
的命令时,bash加载后键入的任何内容都不会显示,然后进程最终会因以下错误而终止:

Traceback (most recent call last):
  File "/usr/local/Cellar/fig/1.3.3/libexec/bin/docker-compose", line 9, in <module>
    load_entry_point('docker-compose==1.3.3', 'console_scripts', 'docker-compose')()
  File "/usr/local/Cellar/fig/1.3.3/libexec/lib/python2.7/site-packages/compose/cli/main.py", line 32, in main
    command.sys_dispatch()
  File "/usr/local/Cellar/fig/1.3.3/libexec/lib/python2.7/site-packages/compose/cli/docopt_command.py", line 21, in sys_dispatch
    self.dispatch(sys.argv[1:], None)
  File "/usr/local/Cellar/fig/1.3.3/libexec/lib/python2.7/site-packages/compose/cli/command.py", line 34, in dispatch
    super(Command, self).dispatch(*args, **kwargs)
  File "/usr/local/Cellar/fig/1.3.3/libexec/lib/python2.7/site-packages/compose/cli/docopt_command.py", line 24, in dispatch
    self.perform_command(*self.parse(argv, global_options))
  File "/usr/local/Cellar/fig/1.3.3/libexec/lib/python2.7/site-packages/compose/cli/command.py", line 66, in perform_command
    handler(project, command_options)
  File "/usr/local/Cellar/fig/1.3.3/libexec/lib/python2.7/site-packages/compose/cli/main.py", line 358, in run
    dockerpty.start(project.client, container.id, interactive=not options['-T'])
  File "/usr/local/Cellar/fig/1.3.3/libexec/vendor/lib/python2.7/site-packages/dockerpty/__init__.py", line 27, in start
    PseudoTerminal(client, container, interactive=interactive, stdout=stdout, stderr=stderr, stdin=stdin).start()
  File "/usr/local/Cellar/fig/1.3.3/libexec/vendor/lib/python2.7/site-packages/dockerpty/pty.py", line 153, in start
    self._hijack_tty(pumps)
  File "/usr/local/Cellar/fig/1.3.3/libexec/vendor/lib/python2.7/site-packages/dockerpty/pty.py", line 241, in _hijack_tty
    write_stream.do_write()
  File "/usr/local/Cellar/fig/1.3.3/libexec/vendor/lib/python2.7/site-packages/dockerpty/io.py", line 164, in do_write
    raise e
OSError: [Errno 32] Broken pipe
这是我的Dockerfile:

## python, node and bower ##
FROM python:3.4.3
WORKDIR /usr/local
RUN apt-get install curl && \
        curl --silent --location https://deb.nodesource.com/setup_0.12 | bash - && \
        apt-get install -y nodejs && \
        npm install -g bower
ENV PATH /node_modules:$PATH

## code install ##
RUN mkdir /code
WORKDIR /code
ADD ./requirements/ /code/requirements/
RUN pip install -r /code/requirements/docker.txt
ADD ./ /code/
我正在运行Docker 1.8.1、Compose 1.4.0、Machine 0.4.1、Python 2.7.10,所有这些都是在OS X 10.10.5上运行的。我尝试删除所有docker容器并重建我的项目,但我得到了相同的错误。我还试着重建我的docker机器,从头开始,但同样的问题再次出现

注意:我能想到的两个变化可能与此不起作用有关:

  • OS X 10.10.5将我从Python 2.7.6升级到了2.7.10
  • 我发现有人在修复“UnsecurePlatformWarning”警告后出现了“断管”错误。在过去的几天里,我也应用了一个修复程序来解决这个问题(
    pip安装请求[security]
    ),但是在应用了这个更改之后,事情就直接正常了,但是它和python 2.7.10的组合可能是个问题

  • 关于为什么会崩溃,你有什么想法吗?

    正如michaelperret在一篇文章中所描述的那样,当他应用这个方法时,他开始遇到同样的问题。几天前,我自己也应用了这个修复程序,但似乎直到我重新启动系统(OSX将我升级到10.10.5)之后,“管道破裂”问题才浮出水面

    修复程序是我卸载了一些属于修复程序的包:

    pip uninstall pyopenssl ndg-httpsclient pyasn1
    

    使用docker compose版本:1.3.3、CPython版本:2.7.9和docker 1.8.1构建d12ea79,可以正常工作(例如,使用
    docker文件
    docker compose.yml
    以及空的
    .env
    ,我会得到一个可用的bash提示符)。你能试试更新docker吗?与此同时,我将尝试安装docker 1.7.1。抱歉,我没有成功安装docker 1.7.1。我升级了我机器上的所有东西,并在重新启动后重建了所有东西,我认为这可以解决问题,但我忘记了我真正的问题是“管道破裂”问题——docker一整天都有其他问题。无论如何,Docker 1.8.1、Compose 1.4.0、Machine 0.4.1、Python 2.7.10仍然存在这个问题。Python2.7.10是我所知道的唯一一个变化,因为它停止工作了。终于让它工作了。我不得不卸载python包pyopenssl、ndg httpsclient和pyasn1(我没有费心去弄清楚是哪一个导致了问题,但看起来我是在试图修复关于“不安全平台警告”的不同警告时安装它们的。我将用此信息发布答案。我在将主机操作系统升级到Ubuntu 16.04后遇到此问题。卸载系统包
    pyopenssl
    ndg httpsclient
    pyasn1
    修复了此问题-但是,请注意,删除系统Python包从来都不是一个好主意。
    pip uninstall pyopenssl ndg-httpsclient pyasn1