GCE无法正确部署GCR映像

时间:2018-07-27 14:03:46

标签: docker google-compute-engine google-container-registry

我已遵循Google文档中的this guide,以便能够将自定义Docker映像推送到Google Container Registry,然后能够使用该映像启动新的GCE实例。最初,我想尝试从docker hub使用anaconda3 public image,而无需进行任何修改(以进行测试)。

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

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

好!现在,我可以通过GCR界面看到我的图像,也可以使用GCE进行部署。我选择使用 f1-micro 实例,容器优化的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,并带有所需的所有工具(熊猫,Numpy,Jupyter笔记本等)


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

TL; DR 我的问题是我已经在Google GCR上推送了anaconda3映像,但是当我使用该映像启动虚拟实例时,上面没有anaconda

1 个答案:

答案 0 :(得分:4)

通常无法找到直接安装在GCE实例上的anaconda库。

实际上,当您选择在GCE VM实例上部署容器映像时,将从提供的映像(在示例中为eu.gcr.io/my-project-id/anaconda3)启动Docker容器。这些库未安装在主机上,而是安装在该容器的内部 (运行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)可在主机和容器之间提供隔离。我建议您阅读有关containerizationDockerhow to run containers on Container-Optimized OS的文档。