Tech

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

あるディレクトリをS3バケットにマウントするため、Golangで書かれたライブラリgoofysを使うことに。

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

以下は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.

 

  • この記事を書いた人

次世代ペンギン

長いのでペンギンとお呼びください。システム開発・プログラミングのお仕事をしています。甘味とコーヒーは生命線。多くの人に役立つ情報のシェアが目標です。

人気の記事

1

会社員でプログラマーとして働いている人、インフラやネットワークのエンジニアとして働いている人の中には、フリーランスのプログラマーとして独立、もしくは転向したい人もいるので ...

2

キャリアアップのため、または高収入を目指して、しっかりプログラミングを学びたいという人が増えてきましたね。 この記事では現役のエンジニアである私が、実際に仕事で稼げるよう ...

3

フリーランスのプログラマーにとって収入の向上に最も直結するのはスキルです。 必要なスキル、スキルの獲得方法が気になる人も多いでしょう。 また、これからフリーランスを目指す ...

4

Vuetifyの v-progress-circular コンポーネントは、数値データや処理状況を環状(円状)のデザインで教えてくれるUIデザインです。 ローディングのス ...

5

Vuexのstore(ストア)を使うと、各コンポーネント間で個別にデータのやり取りすることなく、データを一元的に管理できます。Vueでは欠かせない機能といえるでしょう。 ...

-Tech
-, ,