Docker 未找到文件的 CMD 错误

Docker CMD errors with File Not Found

我已经构建了一个映像,它必须 运行 一个 python 安装脚本从头到尾完成,并且旨在用作 k8s / Openshift 上的 initContainer。

图像构建良好,当我在本地执行 docker run <image> 时,它可以很好地启动脚本。此外,当我(本地)检查容器的文件系统时,脚本就在那里,正如预期的那样。

然而,当我 运行 在 Openshift 上使用与 initContainer 相同的图像时,它一直告诉我“没有这样的文件或目录”,当脚本应该启动时。

我预计这是由于用户的权限,但我不知道如何解决它。

Docker 文件:

<do stuff, copy some scripts / perform some setup / install dependencies>

ARG USER_UID=1001
COPY myscript /opt/build/myscript
RUN chmod +x /opt/build/myscript &&\
    chown ${USER_UID}:0 -R /opt/build

CMD [ "/opt/build/myscript", "parameter1", "parameter2" ]

TL;DR:如何让docker/用户运行在k8s上“看到”这个脚本和运行它?

编辑: 当我 运行 将 docker 图像作为 k8s 容器而不是 initContainer 时,脚本被发现/这个错误不是抛出。

编辑2:原来是一个卷挂载到父目录;回答了我自己的问题。

initContainer 有一个卷挂载,它毕竟覆盖了包含脚本的父目录。我删除了卷装载,脚本现在开始。

故障排除:向 initContainer 添加了命令和参数:

      initContainers:
        - name: build-project
          command:
            - /bin/sh
            - '-c'
          args:
            - >-
              ls -la /path/to/script

发现确实不存在。有一个卷 (emptyDir: {}) 安装到其中一个父目录。