docker机器在gcp上创建失败

时间:2017-09-04 18:21:34

标签: cloud google-cloud-platform google-compute-engine docker-machine

提前谢谢你。我发现这非常令人沮丧,并尝试了我在网上找到的所有解决方案。

我正在尝试使用docker-machine在带有谷歌云平台计算引擎的虚拟机中运行docker容器。

我从最新版本的OSX运行它。我在这里遵循了指南:https://docs.docker.com/machine/drivers/gce/

在开始之前,我已经运行了创建服务api并设置它和环境变量。通过:“API管理器” - > “证书” - > “创建凭据” - > “服务帐户密钥”。将api密钥保存到我的工作目录并将其设置为环境变量(运行命令:

gcloud config set project PROJECT_ID gcloud auth login

然后运行

docker-machine --debug create --driver google --google-project PROJECT_ID vm0001

PROJECT_ID是我的项目ID。

最后,创建vm并在顶部运行docker的命令:

notifying bugsnag: [Error creating machine: Error running provisioning: ssh command error: command : sudo systemctl -f start docker err : exit status 1 output : Job for docker.service failed because the control process exited with error code. See "systemctl status docker.service" and "journalctl -xe" for details.

命令失败并显示输出:

{{1}}

我已经尝试将我的docker-machine更新为0.12.2,因为(https://github.com/docker/machine/issues/4156)这似乎是一个类似的问题。

任何建议都将不胜感激! :)

1 个答案:

答案 0 :(得分:0)

我可以确认在 docker-machine 版本 0.12.2 中问题仍未完全解决。

版本 0.12.0 之前的问题是 docker.service 的systemd配置使用docker daemon而不是新的dockerd守护进程命令。这似乎现在已经解决了。

但对我来说,它使用的配置--storeage-driver aufs不适用于某些没有extra packages installed的ubuntu系统。

正如AUFS文档页面“Use the AUFS storage driver”中所述,应该使用overlay2存储驱动程序。

因此,您可以通过编辑服务配置来解决此问题:

$ sudo vim /etc/systemd/system/docker.service.d/10-machine.conf

看起来应该是这样的:

[Service]
ExecStart=
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2376 -H unix:///var/run/docker.sock --storage-driver overlay2 --tlsverify --tlscacert /etc/docker/ca.pem --tlscert /etc/docker/server.pem --tlskey /etc/docker/server-key.pem --label provider=google
Environment=

请注意--storage-driver overlay2部分。

然后只需运行这些命令即可重新加载systemd并启动docker:

$ sudo systemctl daemon-reload
$ sudo systemctl -f start docker

Docker现在应该运行。

修改:设置存储驱动程序的另一种方法是使用 docker-machine 参数--engine-storage-driver

docker-machine --debug create --driver google --engine-storage-driver overlay2 --google-project PROJECT_ID vm0001