この記事は、マウントについて、いろんなサイトを調べてもよく分からなかった人向けに、なるべくわかりやすく解説したものです。
マウントとは
マウントについては、USBメモリの例えが一番理解しやすいと思います。
てことで、まずPCにUSBを差し込んだ場合を考えます。
USBをPCに差し込むと、ローカルフォルダに「USBドライブ(D:)」みたいなフォルダが作られると思います。
そして、そのフォルダを開くとUSB内に保存していたファイルを見ることができ、そこに新たなファイルを追加したりすることもできます。
今回は、USBに1つのwordファイルがあると想定します。
図にするとこんな感じ。(.docxがwordファイルです)
USBを挿すことで、USB内の.docxファイルをPCでみることができます。
この時ポイントは、docxファイルはPC上にはないということです。
docxファイルはあくまでUSBの中にあり、PCにはファイルとしては存在しないことに注意してください。
その証拠に、USBを抜くと、もうPCではdocxファイルを見ることも編集することもできません。
USBを挿している間だけ、PCからUSBの中身を操作できている。
これが、USBをPCに刺した場合の構造になっています。
これが理解できればマウントは難しくありません。
Dockerでマウントを行う場合では
- 自分のPC→コンテナ
- USB→自分のPC(ローカルファイル)
と置き換えると、USBを挿すにあたる行動がマウントになります。
図にするとこんな感じ
さっきの言い方で言うなら、自分のPC側を、Dockerのコンテナにマウントさせることで、Docker側からPCのファイルを操作できるということになります。
これにより、例えばWebアプリケーションを作った場合、
- クライアントが見る画面を出しているのはコンテナにあるサーバー
- だが、そのサーバーがみせているHTMLファイルなどはコンテナ内にはない
- HTMLファイルなどはコンテナ側から自分のPCをマウントすることで、実は自分のPCにあるファイルを見せている
ということになります。
ちょっと分かりにくいかもしれないので、USBの例えに戻すと
Webアプリケーションをコンテナのサーバーで提供しているというのは、
- USBメモリをPCに挿す
- PCでUSBメモリ内のwordファイルを開く。
- wordファイルを開いたPCの画面を、友達に見せる。
という感じになります。
友達からすれば、PCの中にwordファイルが存在するようにしか見えません
しかし、実際にはUSBに存在するファイルを、マウントすることでPCで操作しているだけ、ということですね。
マウントの説明は以上になります。
不明な点、間違い、感想などあればコメントいただけると嬉しいです。
コメント