繁体   English   中英

无法从kubernetes容器内运行的docker写入文件

[英]Unable to write file from docker run inside a kubernetes pod

我有一个使用卷写入文件的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

当我尝试在Pod内运行此容器时,容器正常退出,但未写入任何文件

首先,不需要在pod :)中运行docker run命令。 应该为Pod编写一个规范文件 (yaml),并且kubernetes将使用docker在docker中运行容器中的容器。 理想情况下,你不需要跑docker使用kubernetes时(除非你正在调试码头工人有关的问题)的命令。

该链接对码头用户具有有用的kubectl命令。

如果您习惯于Kompose docker-compose ,请参考Kompose从docker docker-compose转到kubernetes:

在kubernetes中将目录作为卷安装在主机上的一些选项:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM