当前位置: 首页 > 知识库问答 >
问题:

无法访问与init容器共享的文件

冯星阑
2023-03-14

我正在init容器中创建一个文件,并希望在主容器中使用该文件。

  containers:
  - name: test1
    imagePullPolicy: Always
    image: newbusybox
    command:
    - "some command  --from-file=tmp/file.txt"
    volumeMounts:
    - name: workdir
      mountPath: /tmp
  initContainers:
  - name: install
    image: busybox
    command: ["/bin/sh", "-c"]
    args: ["echo test  > /pod-data/file.txt]
    volumeMounts:
    - name: workdir
      mountPath: /pod-data/
  volumes:
  - name: workdir
    emptyDir: {}

Pods进入crashlookBack关闭状态,出现以下错误

Error response from daemon: OCI runtime create failed: container_linux.go:349: starting container process caused "exec: \"some command  --from-file=tmp/file.txt\": stat some comamnd  --from-file=tmp/file.txt: no such file or directory": unknown

我已验证文件是否安装在tmp位置。

共有1个答案

莫骞仕
2023-03-14

我不太确定你想完成什么,但我需要同意用户@Lauri Koskela提供的评论:

您可以尝试将命令字段更改为这样工作吗?kubernetes.io/docs/tasks/inject-data-application/...错误消息表明错误不在文件共享中,而是在命令规范中

@Lauri Koskela发布的链接:

  • 库伯内特斯。io:注入数据应用程序:在shell中运行命令

可以揭示将命令解析到pod中的方法。

你还有一个错字:

  • <代码>参数:[“回声测试
Error response from daemon: OCI runtime create failed: container_linux.go:349: starting container process caused "exec: \"some command  --from-file=tmp/file.txt\": stat some comamnd  --from-file=tmp/file.txt: no such file or directory": unknown

上面的错误与您试图在不指定shell的情况下运行命令有关(它还与您所做的注释有关)。您可以在此处阅读更多信息:

  • 堆栈溢出。com:问题:Docker:在$PATH中未找到可执行文件

如果您要:

    command: ["/bin/sh", "-c"] 
    args: 
    - "some command  --from-file=/tmp/file.txt"

您应该能够运行一些命令

沿着这条路径,下面是其他示例:

apiVersion: v1
kind: Pod
metadata:
  name: busybox-pod
  labels:
    app: busybox
spec:
  containers:
  - name: busybox
    imagePullPolicy: Always
    image: busybox
    command: ["/bin/sh", "-c"]
    args: 
    - "cat /tmp/file.txt > /working.txt && sleep 3600"
    # - "cat /tmp/file.txt > /working.txt; sleep 3600"
    volumeMounts:
    - name: workdir
      mountPath: /tmp
  initContainers:
  - name: install
    image: busybox
    command: ["/bin/sh", "-c"]
    args: ["echo test > /pod-data/file.txt"]
    volumeMounts:
    - name: workdir
      mountPath: /pod-data/
  volumes:
  - name: workdir
    emptyDir: {}

此示例将:

  • 使用busybox图像运行initContainer,并将“test”文本保存到名为file的文件中。txt在pod数据目录中

运行此容器后,您可以检查以下人员是否正确读取了文件:

  • $kubectl exec-t busybox-pod--cat/working.txt
hello
 类似资料:
  • 我读过/看过很多教程、参考资料、文档、VID等等,我正在尝试执行它们似乎解释的操作,但是当我创建装载了本地路径的容器,然后进入容器,设置一些配置设置,然后查看装载的windows路径时,那里没有保存任何东西。 不确定问题出在哪里? 下面是我正在运行的docker cmd示例: 根据我的理解,存储在容器中文件夹中的任何内容也应该保存到主机上的Windows文件夹中,但没有任何内容保存到该Window

  • 问题内容: 我有一个带有.groovy脚本的共享库,可以在jenkinsfile中这样调用: 我要执行的共享库中也有一个.ps1文件。但是,如果当我从jenkinsfile调用共享库函数时从共享库函数中执行该操作,则当前工作目录就是jenkinsfile所在管道的jenkins工作目录(通常是您想要的)。 有没有办法访问共享库中的文件?我想要做 问题答案: 您只能使用内置步骤获得内容。这就是为什么

  • 我使用hostinger,在我的父托管目录中有两个文件夹 my-laravel-app-文件夹 public_html 公开/索引。我变了

  • 问题内容: 我使用docker-compose和以下配置部署了标准的Jenkins Docker映像: 在阅读了许多SO问题之后,我测试了将Root添加到docker用户组,并验证Container中的用户是Root with 。 当我尝试使用“ Docker URL = unix:///var/run/docker.sock”在Jenkins UI中添加Docker访问时,出现错误消息“ **o

  • 我有一台Windows CE 5.0计算机,该计算机具有文件的smb共享。 此文件是由批处理脚本创建的,该脚本将另一个exe的stderr重定向到该文件:。 考虑到在运行时,我无法在Windows CE计算机上使用打开,这一操作非常有效。如果我尝试,NotepadCE将显示一个共享冲突错误。 同一文件可以由其smb共享同时读取,不会出现任何问题。 是否有一种方法可以使Windows CE计算机上的

  • 本文向大家介绍ASP.NET访问共享文件夹的详细步骤,包括了ASP.NET访问共享文件夹的详细步骤的使用技巧和注意事项,需要的朋友参考一下 假设找找看的ASP.NET程序在A服务器,索引文件在B服务器的ZzkIndex共享文件夹中,访问地址是\\192.168.18.18\ZzkIndex\。要实现就是在A服务器的ASP.NET程序中能读写共享文件夹\\192.168.18.18\ZzkIndex