我有一个使用卷写入文件的 Docker 镜像:
docker run --rm -v /home/dir:/out/ image:cli args
当我尝试在 Pod 内运行它时,容器正常退出,但没有写入文件。
我不明白。
如果找不到卷,容器会抛出错误,例如,如果我在没有 -v
选项的情况下运行它,则会抛出错误:
Unhandled Exception: System.IO.DirectoryNotFoundException: Could not find a part of the path '/out/file.txt'.
但我没有从容器中收到任何错误。 它就像写入文件一样完成,但文件不存在。
我对 Kubernetes 还很陌生,但这让我抓狂。
kubernetes 是否会阻止文件写入?或者我错过了一些明显的东西?
整个 Kubernetes 上下文由 GCP Composer-airflow 管理,如果有帮助的话......
docker -v: Docker version 17.03.2-ce, build f5ec1e2
最佳答案
如果您想在 Kubernetes 中实现这种行为,您可以使用 hostPath
音量。
本质上,您在 Pod 规范中指定它,然后将卷安装在 Pod 运行的节点上,然后在 Pod 退出后该文件应该位于该节点中。
apiVersion: v1
kind: Pod
metadata:
name: test-pd
spec:
containers:
- image: image:cli
name: test-container
volumeMounts:
- mountPath: /home/dir
name: test-volume
volumes:
- name: test-volume
hostPath:
path: /out
type: Directory
关于docker - 无法从 kubernetes pod 内的 docker run 写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53328627/