Docker 仅重新启动Kubernetes中的侧车容器
我的舱里有两个集装箱。第一个容器是我的主要应用程序,第二个容器用作侧车容器,具有以下图像,具有以下DockerfileDocker 仅重新启动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应用程序,作为进程运行。所以我不能在这一侧的汽车集装箱上执行。我需要重新启动侧容器(我的二进制文件),但是主容器中不应该有任何更改。不得
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等。您提供的参考链接无效。修复了无效链接。