代码之家  ›  专栏  ›  技术社区  ›  Neekoy

无法运行作为具有777权限的configmap装载的bash脚本

  •  0
  • Neekoy  · 技术社区  · 6 年前

    这可能很简单,但我似乎不明白为什么作为configmap装载的bash脚本不能作为根运行:

    root@myPodId:/opt/nodejs-app# ls -alh /path/fileName 
    lrwxrwxrwx 1 root root 18 Sep 10 09:33 /path/fileName  -> ..data/fileName
    
    root@myPodId:/opt/nodejs-app# whoami
    root
    
    root@myPodId:/opt/nodejs-app# /bin/bash -c /path/fileName
    /bin/bash: /path/fileName: Permission denied
    

    我猜,但我想和Docker一样,容器中的根不是实际的根,它的工作方式更像是一个伪根帐户。

    如果是这种情况,并且文件不能以这种方式运行,那么在每次脚本更改时,如何在不必重新创建Docker容器的情况下包含脚本?

    2 回复  |  直到 6 年前
        1
  •  1
  •   Konstantin Vustin    6 年前

    您不能运行作为 ConfigMap . 资源本身的名称(configmap)应该让您不使用它。 作为一种解决方案,您可以将脚本放在一些git repo中,然后将emptydir装入使用git克隆repo的initcontainer中,然后将emptydir装入pod_的容器中。在容器创建期间,initcontainer将每次下载最新版本

        2
  •  0
  •   Neekoy    6 年前

    好吧,所以我没有到文档的链接,但是configmap肯定安装在只读文件系统上。我想到的是将文件的内容分类到另一个文件中本地根目录可以写入的位置 /usr/local 在我的情况下,通过这种方式可以运行文件。

    如果有人想出一个更聪明的解决办法,我会把它标为正确的答案。