質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

MariaDB

MariaDBは、MySQL派生のオープンソースなリレーショナルデータベースシステムです。 また、MySQLとほぼ同じデータベースエンジンに対応しています。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Q&A

解決済

1回答

4929閲覧

指定していないディレクトリがマウント先に、設定されてしまう

study_111

総合スコア82

docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

MariaDB

MariaDBは、MySQL派生のオープンソースなリレーショナルデータベースシステムです。 また、MySQLとほぼ同じデータベースエンジンに対応しています。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

0グッド

0クリップ

投稿2020/08/29 01:07

編集2020/08/29 01:08

docker-compose -f ./docker-compose.yml up -dを実行した際に不可解な現象が起きてしまっております。
以下は、docker-compose.ymlファイルです

version : '3.7' services: wordpress: image: wordpress:latest links: - db:mysql networks: mynet: volumes: - wp-vol:/var/www/html depends_on: - db db: image: mariadb:latest environment: MYSQL_ROOT_PASSWORD: password123 networks: mynet: ipv4_address: 172.20.0.2 volumes: - mysql-vol:/var/lib/mysql volumes: wp-vol: driver_opts: type: none device: /data/html o: bind mysql-vol: driver_opts: type: none device: /data/mysql o: bind networks: mynet: driver: bridge ipam: driver: default config: - subnet: 172.20.0.0/24

docker-compose -f ./docker-compose.yml up -dを実行すると以下のようにエラーが出力されます。

Creating wordpress_db_1 ... error ERROR: for wordpress_db_1 Cannot create container for service db: failed to mount local volume: mount /data/mysql:/var/lib/docker/volumes/wordpress_mysql-vol/_data, flags: 0x1000: no such file or directory ERROR: for db Cannot create container for service db: failed to mount local volume: mount /data/mysql:/var/lib/docker/volumes/wordpress_mysql-vol/_data, flags: 0x1000: no such file or directory ERROR: Encountered errors while bringing up the project.

こちら不可解なことに、dbのvolumeのマウント先が、「/var/lib/mysql」ではなく、/var/lib/docker/volumes/wordpress_mysql-vol/_dataのように指定していないディレクトリになってしまっています。
こちらの現象が何故起こってしまっているのか、分からない状況です...
どなたか、原因究明の為、ご助言頂けましたら幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

db の方でやりたいこととしては以下の認識であってますでしょうか。
「docker コンテナ内の db データを volume を使ってホスト側に保存しておきたい」
(コンテナを消して、再度コンテナを生成したときに前のコンテナで使っていたデータを使いたい)

エラーを解決する方法としては以下のを実施することかと考えます

  • /data/mysql をホスト側につくる(volumes.***.driver_opts.device指定先)
  • volumes.mysql-vol.driver_opts.device指定先をすでにあるディレクトリに変更する

いまでてるエラーの内容は、「docker-compose でつくったホスト側の volume を、ホスト上の別ディレクトリ(今回は /data/mysql)に別名的にマウントしようとしてエラー」になっています。
コンテナ上のデータをホスト先にマウントするのに失敗しているわけではありません(services.db.volume 指定先)。

/var/lib/docker/volumes/wordpress_mysql-vol/_data は docker-compose が
ホスト側に自動でつくってくれる volume 先になっています(<services 名>_<volumes 名>)。

自身でホスト側への保存先をきめたければ volumes の設定をすれば大丈夫なのですが、
とくに拘りなければ driver_opts 設定しなくても volume 自体の作成は可能です。
(wordpress も設定も同様です)

投稿2020/08/29 06:41

kiino

総合スコア557

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

study_111

2020/08/29 08:00

ご回答ありがとうございます。 > db の方でやりたいこととしては以下の認識であってますでしょうか。 こちらの部分なのですが、現在Dockerの学習をしておりドキュメント通りに進めている状況な為、全ては把握しきれていないのですが、大方そのように理解しております。 >別名的にマウントしようとしてエラー こちらですが、別名ということは、ホスト側の「/var/lib/docker/volumes/wordpress_mysql-vol/_data」に保存されるvolumeと同じvolumeを「/data/mysql」にも保存しようとしていたということでしょうか...?
kiino

2020/08/29 08:19

ご返信ありがとうございます。 > ドキュメント通りに進めている状況な為 承知しました。背景を把握したかったのですが、そういう事情だったのですね。 > 同じvolumeを「/data/mysql」にも保存しようとしていたということでしょうか 概ねそのように感じとっていただければと思います。 docker/volumes 配下だけだと、volume の削除関係のコマンドや操作で消してしまう可能性もあるため、 べつのディレクトリに保存しておくケースがあります。 (デフォルトの volume だと docker の管理しているストレージになってしまいそうですが、 /data/mysql は docker 管轄外なので、もともとの volume が削除されてもファイルが残ります)
study_111

2020/08/29 08:45 編集

ご丁寧にご説明下さりありがとうございます。 ご提示頂きました解決案ですが、「/data/mysql をホスト側につくる」こちらは試してみたのですが、同様のエラーが出力されてしまいました為、「volumes.mysql-vol.driver_opts.device」の指定先を別の存在するディレクトリに変更し、再度試してみましたら、エラーが出力されることなく、以下のメッセージが表示されました。 「Creating volume "wordpress_wp-vol" with default driver wordpress_db_1 is up-to-date Creating wordpress_wordpress_1 ... done」 変更を行った点は、「volumes.wp-vol.drivers_opts.device」の指定先と、「volumes.mysql-vol.drivers_opts.device」に指定していたディレクトリをdesktop下の新たに作成したディレクトリ内に「user/name/desktop/data/mysql」「user/name/desktop/data/html」のような形で絶対パスで指定しました。
study_111

2020/08/29 08:44 編集

> こちらも同じ内容のエラーですかね? あ、そうですね... 以前、そちらの方でも質問させて貰ったのですが、解決に至らなかった為、新たに内容を整理し、質問を立てたといった形でした。
study_111

2020/08/29 08:48 編集

ただ、学習しているドキュメントの内容とターミナルに表示されているメッセージが少々違う為、そちらの部分につきましては気がかりな点なのですが...
study_111

2020/08/29 08:51

あ、いえ。こちら勘違いでした。 表示されている内容はドキュメントと同じでした。
study_111

2020/08/29 08:53

ご親切に教えて下さり、ありがとうございました。 おかげで、解決することが出来ました。
kiino

2020/08/29 15:06

確認ありがとうございます。 解決したようで何よりです。こちらも安心しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問