首页 > 解决方案 > 如何干净地阻止容器重新启动 Kubernetes

问题描述

我想创建一个 nginx 容器,将本地机器 /home/git/html 的内容复制到容器 /usr/share/nginx/html 中。但是我不能使用 Volumes 和 Mountpath,因为我的 kubernetes 集群有 2 个节点。我决定从我的 github 帐户中复制内容。然后我创建了这个 dockerfile:

FROM nginx
CMD ["apt", "get", "update"]
CMD ["apt", "get", "install", "git"]
CMD ["git", "clone", "https://github.com/Sonlis/kubernetes/html"]
CMD ["rm", "-r", "/usr/share/nginx/html"]
CMD ["cp", "-r", "html", "/usr/share/nginx/html"]

dockerfile 可以正确构建,但是当我使用此映像应用部署时,容器会不断重新启动。我知道一旦 docker 完成了它的工作,它就会关闭,然后部署会重新启动它,从而创建循环。但是,当应用基本的 nginx 映像时,它可以正常工作。解决方案是什么?我看到解决方案无限期地运行一个进程以保持容器存活,但我认为这不是一个合适的解决方案。

谢谢 !

标签: dockernginxkubernetes

解决方案


RUN如@tgogos 评论中所述,您需要在构建 docker 映像时使用来执行命令。请参阅参考

你可以尝试这样的事情:

FROM nginx
RUN apt-get update && \
    apt-get install git
RUN rm -rf /usr/share/nginx/html && \
    git clone https://github.com/Sonlis/kubernetes/html /usr/share/nginx/html

CMD ["nginx", "-g", "daemon off;"]

另外,我想建议您查看文档的这一部分,了解如何利用缓存层和多阶段构建优化您的图像。


推荐阅读