次のdocker-compose.ymlの「volumes」の部分の意味を教えてください。
(docker-compose.ymlの内容を一部抜粋しています)
docker
1version: '3' 2services: 3 db: 4 image: mysql:5.7 5 container_name: db_mysql 6 volumes: 7 - db-volume:/var/lib/mysql 8volumes: 9 db-volume:
dbコンテナのvolumeとしてトップレベルで定義された「db-volume」を
dbコンテナの「/var/lib/mysql」に作成する
という意味であっているでしょうか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答3件
0
ベストアンサー
dbコンテナのvolumeとしてトップレベルで定義された「db-volume」を
dbコンテナの「/var/lib/mysql」に作成する
という意味であっているでしょうか?
作成するというのがちょっと惜しいですね。
トップレベルで定義された「db-volume」をdbコンテナの「/var/lib/mysql」にマウントする
という意味になります。
本質問で定義されているdb-volume
はNamed volume(名前付きボリューム)
と言われています。
これはdockerコマンドで参照する時や、複数のサービスで再利用する(以下簡単な例)時等に便利です。
services: db: image: mysql:5.7 container_name: db_mysql volumes: - db-volume:/var/lib/mysql backup: image: backup volumes: - db-volume:/var/lib/backup/data volumes: db-volume:
投稿2019/05/23 06:32
総合スコア4258
0
db-volumeを/var/lib/mysqlにマウントする、という事ですね。
この回答で間違いないですが、「マウント」の意味がいまいち理解しきれていないといった感じでしょうか。
「マウント」とは「取り付ける」くらいの意味合いで解釈していただき、ローカルのdb-volumeをコンテナの/var/lib/mysqlに取り付ける、と考えると理解しやすいのではないでしょうか?
ローカルのdb-volumeとコンテナの/var/lib/mysqlで中身を共有しているイメージです。
コンテナは終了すると中身が全て消えてしまうので、消えては困るようなものはコンテナから取り出してローカルに保存しておきます。そのための設定がvolumesの部分にあたります。
再度起動した時にコンテナの/var/lib/mysqlの情報がローカルのdb-volumeに残っており、それがコンテナの/var/lib/mysqlにマウントされるので、振る舞いとしては前回のコンテナを引き継いだように見えます、これによって見掛け上永続化できているというものです。
投稿2019/05/23 06:46
退会済みユーザー
総合スコア0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2019/05/23 07:05
退会済みユーザー
2019/05/23 07:30
退会済みユーザー
2019/05/23 07:36
2019/05/23 09:44 編集
退会済みユーザー
2019/05/28 04:30
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2019/05/23 07:00