【问题标题】:docker machine create failing on gcpdocker machine create 在 gcp 上失败
【发布时间】:2018-02-13 00:08:10
【问题描述】:

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

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

我从最新版本的 OSX 运行它。我已按照此处的指南进行操作:https://docs.docker.com/machine/drivers/gce/

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

GOOGLE_APPLICATION_CREDENTIALS=/Users/MYUSERNAME/NAME_OF_CREDENTIALS_FILE

然后运行

gcloud config set project PROJECT_ID gcloud auth login

PROJECT_ID 是我的项目 ID。

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

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

命令失败,输出如下:

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.

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

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

【问题讨论】:

  • 在 docker-machine 0.13 中修复

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


【解决方案1】:

我可以确认该问题在 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

【讨论】:

  • 酷。 :) 所以如果你能接受我的回答那就太好了;)
猜你喜欢
  • 2017-06-20
  • 1970-01-01
  • 1970-01-01
  • 2020-06-27
  • 2017-12-18
  • 2019-10-26
  • 1970-01-01
  • 1970-01-01
  • 2017-08-04
相关资源
最近更新 更多