提前谢谢你。我发现这非常令人沮丧,并尝试了我在网上找到的所有解决方案。
我正在尝试使用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)这似乎是一个类似的问题。
任何建议都将不胜感激! :)
答案 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