如何在 Google Compute Engine 上运行 Docker?

Posted

技术标签:

【中文标题】如何在 Google Compute Engine 上运行 Docker?【英文标题】:How do I run Docker on Google Compute Engine? 【发布时间】:2013-12-24 02:55:56 【问题描述】:

在Google Compute Engine上安装和运行Docker的过程是什么?

【问题讨论】:

遗憾的是,谷歌还没有为 Docker developers.google.com/search/results?q=docker创建任何文档 【参考方案1】:

在 Compute Engine 的最近 GA 版本之前,GCE 不支持运行 Docker(由于内核限制),但随着新宣布的部署和使用自定义内核的能力,该限制不再完整,Docker 现在可以很好地在GCE。

感谢proppy,现在在此处为您记录了在 Google Compute Engine 上运行 Docker 的说明:http://docs.docker.io/en/master/installation/google/。享受吧!

【讨论】:

你能指出一个 docker 容器提供一些内容的工作示例吗?到目前为止,即使是谷歌自己的例子:https://github.com/GoogleCloudPlatform/container-vm-guestbook-redis-python 也不起作用,因为端口 80 被 GCE 主机实例上的 Docker 进程占用,并且在更改应用程序的端口后,仍然无法弄清楚为什么端口没有被转发.如果您可以通过正确的端口映射共享在 GCE 上成功运行的 todo 或 hello-world 应用程序,那将有很大帮助。 链接现在失效了【参考方案2】:

Google 的 GitHub 站点现在提供包含 docker 的 gce 映像。 https://github.com/GoogleCloudPlatform/cloud-sdk-docker-image

【讨论】:

【参考方案3】:

很简单:

创建 Compute Engine 实例 curl https://get.docker.io | bash

【讨论】:

curl https://get.docker.io 更安全。您永远不想从不安全的数据包中获取代码并执行它。 该死,google 建议使用这种“pipe to bash”方法安装 gcloud sdk。我希望您的评论能引发蚂蚁大军来解决这个安全问题。【参考方案4】:

现在改进了对 containers on GCE 的支持:

Google Compute Engine 正在扩展对 Docker 容器的支持。此版本是容器优化操作系统映像的开放预览版,其中包括 Docker 和用于管理容器的 open source agent。下面,您将找到与对 Google 上的 Docker、开源存储库和示例感兴趣的社区进行交互的链接。我们期待听到您的反馈并看到您构建的内容。

请注意,目前(截至 2014 年 5 月 27 日)打开预览

这是虚拟机上容器的 Open Preview 版本。因此,我们可能会进行向后不兼容的更改,并且它不包含在任何 SLA 或弃用政策中。客户在使用此 Open Preview 版本时应考虑到这一点。

【讨论】:

【参考方案5】:

他们现在有一个预先安装了 docker 的虚拟机。

$ gcloud compute instances create instance-name
--image projects/google-containers/global/images/container-vm-v20140522
--zone us-central1-a
--machine-type f1-micro

https://developers.google.com/compute/docs/containers/container_vms

【讨论】:

为了后代:这个项目不再提供图像。 $ gcloud compute images list --no-standard-images --project=google-containers 返回“列出 0 项”【参考方案6】:

使用docker-machine 是另一种使用 docker 托管您的谷歌计算实例的方式。

docker-machine create \
  --driver google \
  --google-project $PROJECT \
  --google-zone asia-east1-c \
  --google-machine-type f1-micro $YOUR_INSTANCE

如果你想在谷歌云计算实例上登录本机,只需使用docker-machine ssh $YOUR_INSTANCE

参考docker machine driver gce

【讨论】:

【参考方案7】:

最好在创建计算实例时获取

    转到虚拟机实例页面。 点击创建实例按钮创建一个新实例。 在 Container 部分下,选中 Deploy container image。 在容器映像下指定容器映像名称,并根据需要配置选项以运行容器。例如,您可以为容器映像指定 gcr.io/cloud-marketplace/google/nginx1:1.12。 点击创建。

【讨论】:

欢迎提供解决方案的链接,但请确保您的答案在没有它的情况下有用:add context around the link 这样您的其他用户就会知道它是什么以及为什么会出现,然后引用最相关的您链接到的页面的一部分,以防目标页面不可用。 Answers that are little more than a link may be deleted. 提供了有关步骤的更多详细信息。感谢费利克斯的输入。【参考方案8】:

不支持在 GCE 实例上运行 Docker。实例出现故障,无法再次登录。 我们可以使用 GCE 提​​供的 Docker 镜像来创建实例。

【讨论】:

虽然没有安装 gcloud 并且安装说明 sudo curl https://sdk.cloud.google.com | bash 在 ChromiumOS 上不起作用:'permission denied'。 @geoidesic,该指令是(或曾经是)不正确的,很明显你为什么会得到权限错误:你提升 curl,而不是 bash。相反,curl .... | sudo bash 是正确的管道。 Shell 解析管道并运行两个命令:第一个是sudo(带有参数curl etc.),第二个是bashsudo 不必要地提升 curl,但需要提升权限的 bash 以您的用户 ID 运行。【参考方案9】:

有点晚了,但我想添加一个更详细的工作流程和链接的答案,因为答案仍然相当分散:

    创建 Docker 映像

    一个。本地

    b.使用 Google Container Builder

    将本地 Docker 映像推送到 Google Container Repository

    docker tag <current name>:<current tag> gcr.io/<project name>/<new name>

    gcloud docker -- push gcr.io/<project name>/<new name>

    更新

    如果您已升级到 18.03 以上的 Docker 客户端版本,则不再支持 gcloud docker 命令。而不是上面的推送,使用:

    docker push gcr.io/<project name>/<new name>

    如果升级后遇到问题,请查看更多here。

    创建一个计算实例。 这个过程实际上混淆了许多步骤。它使用谷歌计算引擎创建一个虚拟机 (VM) 实例,该引擎使用谷歌提供的容器优化操作系统映像。该映像包括 Docker 和负责启动我们的 docker 容器的其他软件。然后从容器存储库中提取我们的容器映像,并在虚拟机启动时使用 docker run 运行。注意:即使容器正在运行,您仍然需要使用 docker attach。值得指出的是,每个 VM 实例只能运行一个容器。使用 Kubernetes 为每个 VM 部署多个容器(步骤类似)。在本文底部的链接中查找有关所有选项的更多详细信息。

    gcloud beta compute instances create-with-container <desired instance name> \ --zone <google zone> \ --container-stdin \ --container-tty \ --container-image <google repository path>:<tag> \ --container-command <command (in quotes)> \ --service-account <e-mail>

    提示您可以使用gcloud projects list查看可用的 gcloud 项目

    SSH 进入计算实例。

    gcloud beta compute ssh <instance name> \ --zone <zone>

    停止或删除实例。如果实例停止,您仍需要为静态 IP 和永久性磁盘等资源付费。为避免被计费,请使用删除实例。

    一个。 停止

    gcloud compute instances stop &lt;instance name&gt;

    b. 删除

    gcloud compute instances delete &lt;instance name&gt;

相关链接:

更多关于deploying containers on VMs 更多关于zones 更多create-with-container options

【讨论】:

我认为可以使用gcloud container builds submit --tag gcr.io/&lt;project name&gt;/&lt;new name&gt; . 代替docker taggcloud docker --push,这将构建映像并将其直接发送到google 存储库,跳过docker 存储库步骤。 第 2 步也给了我一个错误:“Docker login failed”,即使在“docker login”之后。我认为这是由于弃用了此命令:cloud.google.com/sdk/gcloud/reference/docker 是的,在更新 gcloud/docker 之后,我今天早上一直在处理 gcloud docker 的弃用问题。切换到 docker-credential-gcr 似乎有效。更多信息:***.com/questions/49780218/… @geoidesic - 我为 18.03 以上的 Docker 客户端版本更新了上述说明。希望有帮助!【参考方案10】:

如果你的谷歌云虚拟机是基于ubuntu的,使用以下命令安装docker sudo apt install docker.io

【讨论】:

【参考方案11】:

您可以使用此链接:https://cloud.google.com/cloud-build/docs/quickstart-docker#top_of_page。

上述链接解释了如何使用 Cloud Build 构建 Docker 镜像并将镜像推送到 Container Registry。您将首先使用 Dockerfile 构建镜像,然后使用 Cloud Build 的构建配置文件构建相同的镜像。

【讨论】:

【参考方案12】:

到目前为止,只是 Docker,容器优化的操作系统肯定是要走的路:

gcloud compute images list --project=cos-cloud --no-standard-images

它预装了 Docker 和 Kubernetes。它唯一缺少的是 Cloud SDK 命令行工具。 (尽管谷歌在 2020 年 1 月 1 日宣布 Python 2 日落,但它也缺少 python3。好吧,还有 27 天......)


作为我想分享的另一条信息,我正在搜索一个标准图像,该图像将提供 docker 和 gcloud/gsutil 预安装(但没有找到,哎呀)。我不认为我一个人在这条船上,因为gcloud 是您在没有 GCE 的情况下几乎无法通过的东西¹。

到目前为止,我最好的发现是 Ubuntu 18.04 映像,它带有他们自己的(非 Debian)包管理器 snap。该映像预装了 Cloud SDK,Docker 安装非常迅速,在 F1 实例初始测试中只需 11 秒,在 n1-standard-1 上大约需要 6 秒。我遇到的唯一问题是 docker 授权助手不可用的错误消息;尝试使用 gcloud components install 添加它失败了,因为 SDK 也是作为 snap 安装的。但是,the helper is actually there,只是不在 PATH 中。从受支持的 Ubuntu 18.04 LTS 映像开始,以下是我在单个临时构建器 VM 中以最少的设置脚本运行时提供的两种工具的原因:

snap install docker
ln -s /snap/google-cloud-sdk/current/bin/docker-credential-gcloud /usr/bin
gcloud -q auth configure-docker

¹ 对于 Daisy 工作流程,我需要使用来自 GS 存储桶的工件和来自本地 gcr.io 注册表的两个巨大的 2GB+ 库映像对磁盘进行映像,这些映像在构建(作为云构建器层)和运行时之间共享(我必须在其中创建容器并将其提取到新建的图像中)。但这不是重点;出于多种可能的原因,人们可能需要这两种工具。 ² 使用gcloud compute images list --uri | grep ubuntu-1804 获取最新的。

【讨论】:

【参考方案13】:

在 GCP Compute Engine 虚拟机上安装 Docker: 这是有关该主题的 GCP 文档的链接:https://cloud.google.com/compute/docs/containers#installing

它链接到Docker install guide,你应该根据你在vm中运行的Linux类型来遵循说明。

【讨论】:

以上是关于如何在 Google Compute Engine 上运行 Docker?的主要内容,如果未能解决你的问题,请参考以下文章