微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

google-app-engine – 使用Docker启动和停止App Engine实例

我使用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
最佳答案
Docker 1.6.x [reference]存在一个持续存在的问题,它阻止gcloud与托管虚拟机一起运行(正如您似乎正在使用的那样).在解决之前最简单的解决方法是将开发计算机中的Docker降级到1.5.0版本,这是已知可用的最新版本.

对于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

原文地址:https://www.jb51.cc/docker/436290.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐