我使用Docker(在OSX上)在本地设置了一个App Engine项目,并且使用通常的“gcloud preview app run app.yaml”命令运行服务器.据我所知,这一直在不断创造新的图像.经过一个小时左右的工作后,我最终得到了30个docker图像,每个图像需要130MB.
最后我被告知我不能再绑定到localhost:8080.我尝试杀死所有容器和图像,但仍然无法使用localhost:8080,直到我重新启动.
好像我没有正确使用Docker / gcloud.任何人都知道我可能做错了什么?除了命中命令C并再次运行“run”命令之外,还有另一种方法我应该重新启动App Engine实例吗?
更新:仔细观察后,我注意到当我在本地运行应用程序并创建容器时,我收到此消息:“http:Hijack与使用CloseNotifier不兼容”.我对Docker不太熟悉,无法理解这里发生了什么.所有搜索似乎都指向Go,我没有使用.
更新2:这是跟踪:
Creating container...
INFO 2015-05-05 02:23:28,293 containers.py:560] Container 1564ce4344957114312d6d1dc696ffbb4176b40ace6dcff5e4239e13ee04a8f6 created.
Exception in thread Thread-2:
Traceback (most recent call last):
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/threading.py",line 810,in __bootstrap_inner
self.run()
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/threading.py",line 763,in run
self.__target(*self.__args,**self.__kwargs)
File "/Users/judeosborn/google-cloud-sdk/platform/google_appengine/google/appengine/tools/docker/containers.py",line 643,in _ListenToLogs
for line in log_lines:
File "/Users/judeosborn/google-cloud-sdk/./lib/docker/docker/client.py",line 225,in _multiplexed_response_stream_helper
socket = self._get_raw_response_socket(response)
File "/Users/judeosborn/google-cloud-sdk/./lib/docker/docker/client.py",line 167,in _get_raw_response_socket
self._raise_for_status(response)
File "/Users/judeosborn/google-cloud-sdk/./lib/docker/docker/client.py",line 119,in _raise_for_status
raise errors.APIError(e,response,explanation=explanation)
APIError: 500 Server Error: Internal Server Error ("http: Hijack is incompatible with use of CloseNotifier")
INFO 2015-05-05 02:23:28,606 module.py:1745] New instance for module "default" serving on:
http://localhost:8080
对于Ubuntu,您可以执行以下操作:
$curl -sSL https://get.docker.com/ubuntu | sed’s / lxc-docker / lxc-docker-1.5.0 /’| sudo sh
但是对于其他Linux发行版,您可能必须修改该sed模式.
另一方面,如果您在Mac OS X下使用Boot2Docker,请按照下列步骤操作:
>完全卸载以前的Boot2Docker / Docker设置;有一个很好的指南here
>按照说明here重新安装Boot2Docker / Docker.重要提示:在完成“安装Boot2Docker”步骤之后和“启动Boot2Docker应用程序”之前,您必须立即停止.到达那里后,打开终端并执行以下命令:
$mkdir ~/.boot2docker
$echo 'ISOURL="https://github.com/boot2docker/boot2docker/releases/download/v1.5.0/boot2docker.iso"' > ~/.boot2docker/profile
此时,您可以继续“启动Boot2Docker应用程序”部分并完成安装.您现在应该拥有一个有效的Docker启动板来启动托管虚拟机.通过发出以下内容来仔细检查您是否安装了正确的版本会很高兴:
$boot2docker ssh docker version | egrep“(客户端|服务器)版本”
输出应如下所示:
客户端版本:1.5.0
服务器版本:1.5.0
现在您可以再次尝试原始命令:
$gcloud预览应用运行app.yaml