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 之后到目前为止所做的步骤:
gcloud auth configure-docker
-> 使用我的 gcloud 凭证 配置 docker
docker pull continuumio/anaconda3
-> 拉取 public 图像
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 实例部署它,Container-Optimized 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 以及所有需要的工具(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.
的文档
我从 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 之后到目前为止所做的步骤:
gcloud auth configure-docker
-> 使用我的 gcloud 凭证 配置 docker
docker pull continuumio/anaconda3
-> 拉取 public 图像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 实例部署它,Container-Optimized 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 以及所有需要的工具(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.