GCE 没有正确部署 GCR 镜像

GCE doesn't deploy GCR image correctly

我从 docker 中心关注 this guide from Google documentation in order to be able to push a custom Docker image to Google Container Registry and then be able to start a new GCE instance with this image. At first I wanted to try using an anaconda3 public image,没有任何修改(为了测试)。

所以这是我在安装 gcloud 和 docker 之后到目前为止所做的步骤:

  1. gcloud auth configure-docker -> 使用我的 gcloud 凭证
  2. 配置 docker
  3. docker pull continuumio/anaconda3 -> 拉取 public 图像
  4. docker tag continuumio/anaconda3 eu.gcr.io/my-project-id/anaconda3 -> 使用文档中指定的注册表名称标记本地映像
  5. docker push eu.gcr.io/my-project-id/anaconda3 -> 将图像推送到 GCR

好!我现在可以通过 GCR 界面看到我的图像,也可以使用 GCE 部署它。我选择使用 f1-micro 实例部署它,Container-Optimized OS 67-10575.62.0 稳定,10 Go 启动磁盘、允许 HTTP 流量等

但是当我用 ssh 连接到新创建的 VM 实例时,我找不到 anaconda3 库(应该在 /opt/conda 中创建)。相反,我可以看到一个 /opt/google 目录,这让我觉得图像没有正确部署,GCE 使用的是默认图像...

所以我尝试检查图像是否在 GCR 中正确推送,所以我决定删除我的本地图像并再次从 GCR 中拉取它:

  1. docker rmi -f eu.gcr.io/my-project-id/anaconda3
  2. docker pull eu.gcr.io/my-project-id/anaconda3:latest

我运行图片

docker run -t -i eu.gcr.io/my-project-id/anaconda3

我可以看到一切都很好,我在 /opt/conda 中正确安装了 anaconda3 以及所有需要的工具(Pandas、Numpy、Jupyter notebook 等)


我试图找到与我有同样问题的人但没有成功...也许我在我的过程中做错了什么? 谢谢!

TL;DR 我的问题是我在 Google GCR 上推送了一个 anaconda3 图像,但是当我用这个图像启动一个虚拟实例时,我没有上面有蟒蛇

在GCE实例上找不到直接安装的anaconda库是正常的

实际上,当您选择在 GCE VM 实例上部署容器映像时,Docker 容器将从您提供的映像启动(在您的示例中,eu.gcr.io/my-project-id/anaconda3)。这些库未安装在主机上,而是 inside 该容器(运行 docker ps 可以看到它,但通常它与您的 VM 实例同名).如果你 运行 像 :

docker exec -it <docker_container_name> ls /opt/conda

然后您应该会看到 anaconda 库,仅存在于容器中

当您 运行 docker run -t -i eu.gcr.io/my-project-id/anaconda3 时,您实际上是在启动容器并 运行 在该容器内创建一个交互式 bash 会话(请参阅 CMD here).这就是您可以找到 anaconda 库的原因:您在容器内!

容器化软件(docker 此处)提供主机和容器之间的隔离。我建议您阅读有关 containerization, Docker and how to run containers on Container-Optimized OS.

的文档