我是Docker容器的新手,仍处于学习阶段。我正在尝试在我的Kubernetes免费帐户中测试以下代码。
apiVersion: v1
kind: Pod
metadata:
name: two-containers
spec:
restartPolicy: Never
volumes:
- name: shared-data
emptyDir: {}
containers:
- name: nginx-container
image: nginx
volumeMounts:
- name: shared-data
mountPath: /usr/share/nginx/html
- name: debian-container
image: debian
volumeMounts:
- name: shared-data
mountPath: /pod-data
command: ["/bin/sh"]
args: ["-c", "echo Hello from the debian container > /pod-data/index.html"]
这部分工作正常。
但是,当我运行Debian容器时,它将/pod-data/index.html
写入共享卷路径后立即终止,并且我无法弄清为什么会这样。
以前有没有人遇到过这种情况,并且有可能的解决方案。
答案 0 :(得分:2)
command: ["/bin/sh"]
args: ["-c", "echo Hello from the debian container > /pod-data/index.html"]
如果您查看debian容器,您会发现它正在将“来自debian容器的Hello”写入/pod-data/index.html。
该过程已完成,没有更多要做。因此容器被终止。
另一方面,nginx容器运行一个守护进程,该守护进程一直在运行,始终为最终用户提供Web内容,因此它将继续运行。
答案 1 :(得分:0)
因为它执行指定的命令然后完成。脚本已完成,无事可做,因此pod终止了。 Pod和Docker容器应该是长期运行的进程。如果您需要运行先运行然后完成的脚本,则应考虑使用Jobs。