Docker 如何干净地阻止容器重新启动Kubernetes

Docker 如何干净地阻止容器重新启动Kubernetes,docker,nginx,kubernetes,Docker,Nginx,Kubernetes,我想创建一个nginx容器,将本地机器/home/git/html的内容复制到container/usr/share/nginx/html中。但是,我不能使用卷和挂载路径,因为我的kubernetes群集有2个节点。 我决定从我的github帐户复制内容。然后我创建了这个dockerfile: FROM nginx CMD ["apt", "get", "update"] CMD ["apt", "get&

我想创建一个nginx容器,将本地机器/home/git/html的内容复制到container/usr/share/nginx/html中。但是,我不能使用卷和挂载路径,因为我的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图像时,它可以正常工作。解决办法是什么?我看到一些解决方案无限期地运行一个进程来保持容器的活力,但我认为这不是一个合适的解决方案


谢谢

构建docker映像时,需要使用
RUN
执行命令,如@tgogos comment中所述。看

您可以尝试类似的方法:

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;"]

此外,我还建议您了解如何利用缓存层和多级构建来优化映像。

多亏@tgogos和@KoopaKiller的帮助,我的Dockerfile如下:

FROM nginx

RUN apt-get update && \ 
    apt-get install git -y

RUN git clone https://github.com/Sonlis/kubernetes.git temp

RUN rm -r /usr/share/nginx/html



RUN cp -r temp/html /usr/share/nginx/html

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

kubernete吊舱继续运行。

来自Dockerfile:“在
Dockerfile
中只能有一条
CMD
指令。”。这也可能对你有所帮助:哦,好的,谢谢你的链接。我不知道跑步和CMD之间有什么区别,我真傻!非常感谢你!它几乎可以立即工作,只是有一些语法错误需要纠正
apt get update
apt get install git-y
,而且由于/usr/share/nginx/html已经存在,所以克隆到另一个目录中,然后复制内容。太棒了!我已经用正确的命令更新了我的答案!