我有一个Image,我应该为它添加一个依赖项。因此,我尝试在容器上运行时更改图像并创建新图像。 我在以下命令后跟随this article:
kubectl run my-app --image=gcr.io/my-project-id/my-app-image:v1 --port 8080
kubectl get pods
kubectl exec -it my-app-container-id -- /bin/bash
然后在容器的shell中,我使用" pip install NAME_OF_Dependncy"安装了依赖项。 然后我退出了容器的shell,正如文章中所解释的那样,我应该使用这个命令提交更改:
sudo docker commit CONTAINER_ID nginx-template
但我无法使用 kubectl 找到适用于Google Kubernetes Engine的相应命令
我应该如何在Google容器引擎中进行提交?
答案 0 :(得分:2)
与K8s版本1.8一样。无法直接对图像执行Hot Fix更改。例如,从运行容器中提交新图像。如果您仍然使用exec
更改或添加内容,它将一直保留到容器运行。它是K8s生态系统中的不是最佳实践。
建议的方式是使用 Dockerfile 并根据需要和要求自定义图像。之后,您可以将图像推送到注册表(公共/私人) )并使用K8s清单文件进行部署。
解决您的问题
现在如果要更改/修改某些内容,只需更改/修改Dockerfile并按照其余步骤操作即可。
如你所知,容器是一种短生物,它没有持久的改变行为(修改了配置,改变了文件系统)。因此,最好在Dockerfile上给出新的行为或修改。
Kubernetes Mantra
Kubernetes是Cloud Native产品,这意味着无论您使用的是Google Cloud,AWS还是Azure,都无关紧要。它需要在每个云提供商上具有一致的行为。