Tech

Docker コンテナ上でgoofysを使ったAWS S3バケットマウント

 

あるディレクトリをS3バケットにマウントしたくなり、GOで書かれたライブラリ「goofys」を使うことに。

EC2のAmazon Linux上ではgoofysを使って極めて簡単にバケットをマウントできるんですが、コンテナ上でやると少しハマったので備忘メモです。

以下はDocker for Windows (Windows 10)で検証した内容です。


普通にgoofysコマンドでマウントしようとすると下記エラーが出現。
ここでハマりました…

main.FATAL Unable to mount file system, see syslog for details

まずは指示の通り、syslogをみてみる。

/go/bin/goofys[6420]: main.FATAL Mounting file system: Mount: mount: running fusermount: exit status 1#012#012stderr:#012fusermount: fuse device not found, try 'modprobe fuse' first#012

この段階でfuse、goofysともに正常にインストールされているはず。なぜ…?

 

解決策を検索してみるとgithubに見つけました。

どうやら原因はdockerコンテナ上でfuseのカーネルモジュールが読み込めていないためのようです。

docker-composeファイルに以下を付け足します。

devices:
- "/dev/fuse:/dev/fuse"
cap_add:
- SYS_ADMIN

参照:Compose ファイル・リファレンス

 

これで再度マウントを試行してみます。

$ goofys [s3バケット名] [マウントポイント] 

エラーなし。

syslogをみても、ちゃんとマウントできているようです。

main.INFO File system has been successfully mounted.

 

-Tech
-, ,

© 2020 スターレイヴ