Docker 仅重新启动Kubernetes中的侧车容器

Docker 仅重新启动Kubernetes中的侧车容器,docker,kubernetes,containers,Docker,Kubernetes,Containers,我的舱里有两个集装箱。第一个容器是我的主要应用程序,第二个容器用作侧车容器,具有以下图像,具有以下Dockerfile FROM scratch EXPOSE 8080 ADD my-binary / ENV GOROOT=/usr/lib/go ENTRYPOINT ["/my-binary"] 基本上,它使用的是scratch,我的二进制文件是一个go应用程序,作为进程运行。所以我不能在这一侧的汽车集装箱上执行。我需要重新启动侧容器(我的二进制文件),但是主容器中不应该有任何更改。不得

我的舱里有两个集装箱。第一个容器是我的主要应用程序,第二个容器用作侧车容器,具有以下图像,具有以下Dockerfile

FROM scratch

EXPOSE 8080
ADD my-binary /

ENV GOROOT=/usr/lib/go
ENTRYPOINT ["/my-binary"]
基本上,它使用的是scratch,我的二进制文件是一个go应用程序,作为进程运行。所以我不能在这一侧的汽车集装箱上执行。我需要重新启动侧容器(我的二进制文件),但是主容器中不应该有任何更改。不得以任何方式更改主容器

有没有可能,我怎样才能做到这一点

非常感谢您调查此事

有人要求提供POD的完整细节,然后可以考虑POD结构

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-deployment
  labels:
    app: my-deploy
spec:
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
      - name: main
        image: my-main-app-image
        ports:
        - containerPort: 80
      - name: my-go-binary
        image: my-go-binary-image
请注意—

kubectl exec POD_NAME -c CONTAINER_NAME reboot 

这对第二个容器不起作用,因为它是临时映像。

因此,您的
重新启动
命令不起作用(当然它会起作用),原因是使用
scatch
作为基本映像

此图像在构建基本图像(如和)或超最小图像(仅包含一个二进制文件以及它所需的任何内容,如hello world)的上下文中最有用

看,

基本映像
scratch
是Docker保留的最小映像。它可以作为建造小型集装箱的起点。使用
scratch
“image”向构建过程发出信号,表示您希望Dockerfile中的下一个命令成为映像中的第一个文件系统层

参考:

从您提供的dockerfile中,唯一的文件系统是go binery。除此之外没有别的了。这就是为什么您不能(不能)运行
reboot
命令的原因。如果更改基本映像,如
busybox
alpine
或任何其他内容,则可以运行
reboot
命令

但请记住,新的基本映像必须具有适当的shell才能运行预期的命令。例如,
busybox
映像具有shell(
bash
),因此可以运行
reboot
命令。而且
alpine
图像也有外壳(
sh


请提供更多详情。也请提供您的pod.yaml。我不确定为什么整个pod结构在这里很重要,但我只是提供了一个示例,以使其更清楚。感谢您的回答,但我无法将草稿图像更改为任何其他基础图像,如alpine等。您提供的参考链接无效。修复了无效链接。