【備忘録】Ubuntu22.04のDocker -v でエラーになる原因と対処方法
現在、自分のサーバー(ubuntuserver 22.04)でNextcloudを使えるようにしたいと思い色々と試しています。
OnlyOfficeを使えるようにdockerに書かれている手順に沿って作業を進めていたのですがエラーで進めなかったので、原因と対処方法を記載しています。
コマンドとエラー
~$ sudo docker run -i -t -d -p 80:80 \
-v /app/onlyoffice/DocumentServer/logs:/var/log/onlyoffice \
-v /app/onlyoffice/DocumentServer/data:/var/www/onlyoffice/Data onlyoffice/documentserver
...中略...
docker: Error response from daemon: error while creating mount source path '/app/onlyoffice/DocumentServer/logs': mkdir /app: read-only file system.
原因
SNAPでDockerをインストールしていたため
UbuntuServerのインストール時に一緒にdockerをインストールしましたが、SNAPでインストールされていたようです。
理由
docker run -v ではホストのディレクトリをコンテナ内でマウントしますが、SNAPでdockerをインストールした場合は、SNAPのサンドボックス機能でホストディレクトリは読み込み専用で扱われるとの事です。
I ran into the same issue and found an explanation in the docker/docker-snap README:
All files that docker needs access to should live within your
$HOME
folder.If the
docker-compose.yml
is outside of the$HOME
folder,docker-snap
won’t see it.Solution: Move the
https://github.com/docker/compose/issues/6361docker-compose.yml
(and accompanying files) inside your$HOME
directory.
そのため、/appを作成できずにエラーになっていたようです。
対処方法
SNAPを使わずにDockerをインストール
原因はSNAPのサンドボックス機能のため、一度SNAP版Dockerを削除してaptでインストールすれば手順通りに進みます。
/homeディレクトリを使う
-vオプションでマウントするディレクトリを変更して、/home以下に変更すればエラーにならずに動作しました。
例
~$ sudo docker run -i -t -d -p 80:80 \
-v /home/onlyoffice/DocumentServer/logs:/var/log/onlyoffice \
-v /home/onlyoffice/DocumentServer/data:/var/www/onlyoffice/Data onlyoffice/documentserver
疑問点としては、{$HOME}なので本来は実行したユーザーのホームディレクトリしか書き込めないとは思うのですが、新しいディレクトリを作成できていました。
コンテナを自動起動にした場合でも対応できるので、問題は無いのですが…。
ディスカッション
コメント一覧
まだ、コメントがありません