我已遵循Google文档中的this guide,以便能够将自定义Docker映像推送到Google Container Registry,然后能够使用该映像启动新的GCE实例。最初,我想尝试从docker hub使用anaconda3 public image,而无需进行任何修改(以进行测试)。
所以这是我在安装gcloud和docker之后到目前为止已完成的步骤:
gcloud auth configure-docker
->使用我的gcloud凭据配置docker docker pull continuumio/anaconda3
->公开图像docker tag continuumio/anaconda3 eu.gcr.io/my-project-id/anaconda3
->用文档中指定的注册表名称标记本地映像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中将其拉出:
docker rmi -f eu.gcr.io/my-project-id/anaconda3
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
答案 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
)可在主机和容器之间提供隔离。我建议您阅读有关containerization,Docker和how to run containers on Container-Optimized OS的文档。