Docker
安裝時“沒有這樣的文件或目錄”,使用 golang:alpine Docker 映像建構
我創建了LinuxServer.io的 docker-transmission 鏡像的一個分支,添加了對 Google Cloud Storage 的支持。
我使用Ernest (chiaen) 的 docker-gcsfuse項目來建構 gcsfuse,即提取他的部分Dockerfile並添加到我自己的. gcsfuse 是使用
golang:alpine
圖像建構的。映像建構成功(包括
gcsfuse
;Dockerfile 指示僅將 gcsfuse 複製到/usr/local/bin
,我檢查了可執行位置;此外,/dev/fuse 已從主機端正確公開)。但是,如果目錄實際存在並且已經設置了正確的權限(設置在/etc/cont-init.d/20-config) ,則gcsfuse
拒絕掛載,並且日誌輸出。我什至嘗試從 shell 執行,但仍然失敗。Mount: stat /donwloads: no such file or directory``/downloads
為了讓 gcsfuse 在我的 (Alpine) Docker 映像中工作,是否缺少包或參數?
如果你想複製,你可以按照我的 repo 中的 README.md 中的說明創建你自己的本地圖像副本(你需要將你的 json 密鑰上傳到 VM)(
amitie10g/docker-transmission
也可以在 Docker Hub 上獲得)。日誌可在此處獲得。
使用的虛擬機映像:
- 開發:Ubuntu 18.04
- 目標:Container-Optimized OS 75-12105.40.0 beta
用於建構的 Docker 鏡像:
- lsiobase/高山:3.9
- golang:高山
提前致謝。
我通過建構
mount.gcsfuse
幫助程序並在以下位置填充/etc/fstab
文件解決了這個問題/etc/cont-init.d/20.config
:echo "$BUCKET /downloads gcsfuse rw,user,noauto,key_file=/config/gcsfuse-key.json" >> /etc/fstab
然後,執行
mount.gcsfuse
:s6-setuidgid abc mount.gcsfuse $BUCKET /downloads