Docker、volumeマウントを実感する
個人的な利用範囲でdockerを使っていると、ローカルでのデータ保存だけしておけば何ら苦労がなかったのですが、環境を移動することを想定してデータの保存を考えた時に、volumeマウントについて昔理解がなかなかできなかったので、volumeマウントを実感できるような方法を参考までに書いてみました。
volumeマウントを実感
volumeマウントを理解する時に個人的に良かった方法は、既存のコンテナを少しいじってそこから新たなイメージを作成するというやり方です。そしてこのコンテナを少しいじる方法を2つに分けることでvolumeマウントが理解できると思います。
今回はデフォルトで"Hello World"と出力されるコンテナを"あいうえお"と出力されるコンテナに変えていくという流れで説明をします。
方法
①volumeマウントをしてオリジナルイメージ作成
【流れ】
事前にindex.html("あいうえお")などを用意する。
↓
用意したindex.html("あいうえお")を起動中のコンテナにvolumeマウントする。
↓
volumeマウントされたコンテナから新規イメージを作成する。
②volumeマウントをしないで(直接上書き)オリジナルイメージ作成
【流れ】
起動中のコンテナにdocker execコマンドで入る。
↓
既存のコンテナ内にあるindex.html("hello world")を見つけ、それをechoコマンドで直接("あいうえお")に上書きをする。
↓
上書きをしたコンテナから新規イメージを作成する。
結果
①、②で作成された新規イメージは両方とも"あいうえお"と表示される予定です。しかし結果として、"あいうえお"と表示されるコンテナは②で作成されたコンテナであり、①ではデフォルトの"Hello World"が表示されてしまいます。
volumeマウントの注意点
なぜvolumeマウントをした①の新規のコンテナでは、"あいうえお"とでないのでしょうか。
それは、
【volumeマウントとは、あくまでマウントをされているのであり、コピーがなされているわけではない。つまりコンテナ内の変更は、コンテナ内に保存されるのでなくホスト側に保存がされている】
ということです。
そのため、【コンテナ内に変更を保存するためには、volumeマウントをするのではなく、直接コンテナ内にて上書きを行う】ということです。
※ちなみにコンテナ内のデータ保持の方法はたくさんありますが、今回はvolumeマウントを理解するためにこの比較方法を取りました。
Author And Source
この問題について(Docker、volumeマウントを実感する), 我々は、より多くの情報をここで見つけました https://qiita.com/Romimi__2020/items/591cbdd63a798b82c78a著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .