iT邦幫忙

0

VM無法執行掛載到VM下的本機資料夾內的shell script

  • 分享至 

  • xImage

情境

作業系統為OSx,我用Minikube(vm = virtual box)嘗試啟動一個Pod, yaml如下:

apiVersion: v1
kind: Pod
metadata:
  name: tensorflow-runtime
  labels:
    app: tensorflow-runtime
spec:
  containers:
    - name: tensorflow-runtime
      image: tensorflow/serving:latest
      imagePullPolicy: IfNotPresent
      command: ["/bin/sh"]
      args: ["do.sh"]
      volumeMounts:
        - mountPath: /tmp/
          name: work-space
  volumes:
    - name: work-space
      hostPath:
        path: /Users/...../
        type: Directory

ps: 沒玩k8s的朋友我這邊說明一下,上面的東西基本上就是打開容器後要執行
掛載到VM目錄下的本機目錄的do.sh檔案,等價於:

sh do.sh

然後失敗了,log如下:

/bin/sh: 0: Can't open do.sh

疑問:

因為小弟對Linux(minikube的執行環境)還有vm都不太熟,但聽聞unixlike的東西的權限管理好像挺複雜的,請問會不會是我哪裡沒有設定好呢QwQ~請各位大大賜教!

自己實驗:

  1. 把do.sh的權限全部打開了,還是不行 Orz:
    在mac上執行了 sudo chmod 777 do.sh

  2. 下列方法可行 : (實際上這是官方文件的解法,但我需要的是可執行腳本的概念)

apiVersion: v1
kind: Pod
metadata:
  name: tensorflow-runtime
  labels:
    app: tensorflow-runtime
spec:
  containers:
    - name: tensorflow-runtime
      image: tensorflow/serving:latest
      imagePullPolicy: IfNotPresent
      # 這邊改了哦
      command: ["/bin/sh"]
      args: ["-c", "cd ..; ls..; done"]
      volumeMounts:
        - mountPath: /tmp/
          name: work-space
  volumes:
    - name: work-space
      hostPath:
        path: /Users/...../
        type: Directory
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

1
froce
iT邦大師 1 級 ‧ 2020-03-16 17:45:02
最佳解答

do.sh用絕對路徑。
官方的例子組合起來是這樣:

/bin/sh -c "cd ..; ls..;"

shell script可以靠冒號去連接多行指令。
如果不想用絕對路徑的話,就得把do.sh丟到$PATH裡。

看更多先前的回應...收起先前的回應...
jokie7585 iT邦新手 5 級 ‧ 2020-03-16 18:28:34 檢舉

那個抱歉QQ 不管是用本機的絕對路徑,還是VM上的絕對路徑
他都告訴我/bin/sh: 0: Can't open do.sh

jokie7585 iT邦新手 5 級 ‧ 2020-03-16 18:30:57 檢舉

另外我發現 我在 vm 中 cd到 do.sh的資料夾(/tmp) 想要 ls 卻發現權限不允許www(ls cannot open directory '.', Operation not permitted)

froce iT邦大師 1 級 ‧ 2020-03-16 19:17:29 檢舉

那就是你虛擬系統裡www沒有存取權限。
另外do.sh也要加執行權限。

jokie7585 iT邦新手 5 級 ‧ 2020-03-16 19:20:29 檢舉

上面那個重裝了一下minikube發現沒問題了... 不知道為什麼拒絕過virtual box的請求一次, OSx直接鎖全部了...

jokie7585 iT邦新手 5 級 ‧ 2020-03-16 19:21:18 檢舉

我可以問一下那個 www 是什麼嗎~ 希望可以給一個研究方向或主題的關鍵字~

jokie7585 iT邦新手 5 級 ‧ 2020-03-16 19:24:42 檢舉

抱歉對linux不熟...我拒絕一次虛擬機想變更本機上檔案的請求後感覺光是檔案有給權限還不夠的樣子(重裝以後可以了)... 希望大大可以提點一個研究的方向

我要發表回答

立即登入回答