Docker で s3fs を使う方法


会社Webサイトリニューアル の時にサーバの移設もした。移設先サーバを Docker ホスティング 環境にしてその上で Docker コンテナとして稼働させています。

その時に s3fs がうまく動かなくてちょっとはまったのでその解決方法を記します。

現象

s3fs をインストールして、コマンド実行する。

s3fs smartwp:/manage/uploads-st /home/shakesoul/Dropbox/SmartWP/demo00/html-staging/wp-content/uploads -o allow_other -o nonempty

すると以下のエラーが出てマウントできない。

fuse: failed to open /dev/fuse: Operation not permitted

調査

エラーメッセージをみても解決方法が浮かばないし、今まで s3fs をセットアップしてきた経験上はじめてのエラーだったので、おそらく Docker 環境だらか生じているのだろうな。と当たりをつけて Google でエラーメッセージを検索。

調べた結果、docker の github issue にあった。https://github.com/docker/docker/issues/9448

やっぱり同じようなことをしたい人は世の中にいる。

解決方法

docker run の時に --cap-add SYS_ADMIN--device /dev/fuse をつける。

実際の打ったコマンド docker run -d -p 80:80 -p 443:443 -p 8080:8080 -p 1122:22 --cap-add SYS_ADMIN --device /dev/fuse centos6.6:origin01

コンテナ上で s3fs コマンド実行と確認。

[[email protected] ~]$ df -h | grep s3fs
s3fs                  256T     0  256T   0% /home/shakesoul/Dropbox/SmartWP/demo00/html-staging/wp-content/uploads
s3fs                  256T     0  256T   0% /home/shakesoul/Dropbox/SmartWP/demo00/html-production/wp-content/uploads
s3fs                  256T     0  256T   0% /home/shakesoul/Dropbox/SmartWP/shakesoul.net/html-staging/wp-content/uploads
s3fs                  256T     0  256T   0% /home/shakesoul/Dropbox/SmartWP/shakesoul.net/html-production/wp-content/uploads
s3fs                  256T     0  256T   0% /home/shakesoul/Dropbox/SmartWP/smartdesigning.me/html-staging/wp-content/uploads
s3fs                  256T     0  256T   0% /home/shakesoul/Dropbox/SmartWP/smartdesigning.me/html-production/wp-content/uploads

めでたしめでたし。