2016-01-13 51 views
1

我試圖從一個碼頭工人容器內安裝一個谷歌的雲鬥,並得到以下錯誤:使用gcsfuse安裝谷歌雲存儲桶在泊塢窗容器

[[email protected] workdir]# gcsfuse -o allow_other --debug_gcs --key-file=/src/gcloud_service_account.json my-bucket-name /gcloud 
Using mount point: /gcloud 
Opening GCS connection... 
Opening bucket... 
daemonize.Run: readFromProcess: sub-process: mountWithArgs: mountWithConn:  setUpBucket: OpenBucket: Bad credentials for bucket "my-bucket". Check the bucket name and your credentials. 

我的憑據我的主機上運行,但不在正在運行的容器上。 API表示不使用root連接,但可以使用-o allow_other標誌(熔絲標誌)覆蓋該標誌。任何想法都表示讚賞。

這是一個centos7基本圖像

+0

可能很愚蠢的問題,但你是否也將憑證文件添加到容器?你是如何啓動容器的,它是否有權利運行保險絲?請注意,這裏還有一個音量插件; https://github.com/coduno/docker-volume-gcs – thaJeztah

+0

是的,憑證文件絕對在/ src目錄中的主機上。我啓動了這樣的容器:'docker run -p 3000:3000 \ -e GOOGLE_APPLICATION_CREDENTIALS =/src/gcloud_service_account.json \ - 名稱gcsfuseTest \ path/to/image'看看插件。不過,我計劃在Google Container Engine上執行此操作。感謝您的回覆。 – Marshall

回答

1

根與不是這裏的薰鯡魚上運行;有問題的憑證是GCS憑證。

請參閱here以瞭解有關將GCS憑證移交給gcsfuse的文檔。最簡單的方法是使用最初配置您的GCE虛擬機的憑據(假設您在GCE上運行),這使運行gcsfuse的工作無需任何進一步的工作。但如果這不起作用,則可以使用標記--key-file爲gcsfuse提供從Google Developers Console下載的JSON密鑰文件的路徑。

+0

感謝您的回覆。我正計劃在Google容器引擎中執行此操作,但我正在Docker容器中本地測試gcfuse內容。我已閱讀您提供的所有URL文檔,但在Docker中無法使用。使用--key-file可以讓我的憑據讀取gcsfuse的唯一方法。導出GOOGLE_APPLICATION_CREDENTIALS =/src/gcloud_service_account.js還沒有工作。再次,這些證書在我的主機筆記本電腦(OSX)上工作。你有沒有在Docker中使用gcsfuse?如果是這樣,連接命令中的glipse將會很有用。再次感謝。 – Marshall

+0

我特別沒有嘗試Docker,也不知道配置Docker。但是gcsfuse在這裏並沒有做任何奇妙的事情;它只是讀取一個環境變量。如果它不起作用,那麼無論什麼配置都會導致該環境變量被設置(或者設置爲該值),必定會出現問題。無論如何,只要使用'--key-file',如果可行的話,你可以使用嗎? – jacobsa

+0

我終於可以掛載了,但是在讀取或寫入目錄「輸入/輸出錯誤」時遇到新問題。查看更新的問題以獲取更多詳細信謝謝你的幫助。 – Marshall

1

更新:我能夠獲得gcsfuse掛載。我不得不運行碼頭與--priviledged選項。 (謝謝#^ Jeeztah的麪包屑!)

+0

做你有這個git回購?我能夠得到gcsfuse在docker中運行,但我無法與其他圖像分享:( –

+0

我無法通過構建命令運行此項。是否有建立圖像時的解決方法?我試圖將容器推送到谷歌雲用於複製 – gazzwi86