【Docker】マウントの意味を究極に分かりやすく

この記事は、マウントについて、いろんなサイトを調べてもよく分からなかった人向けに、なるべくわかりやすく解説したものです。

マウントとは

マウントについては、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アプリケーションを作った場合、

  1. クライアントが見る画面を出しているのはコンテナにあるサーバー
  2. だが、そのサーバーがみせているHTMLファイルなどはコンテナ内にはない
  3. HTMLファイルなどはコンテナ側から自分のPCをマウントすることで、実は自分のPCにあるファイルを見せている

ということになります。

ちょっと分かりにくいかもしれないので、USBの例えに戻すと

Webアプリケーションをコンテナのサーバーで提供しているというのは、

  1. USBメモリをPCに挿す
  2. PCでUSBメモリ内のwordファイルを開く。
  3. wordファイルを開いたPCの画面を、友達に見せる。

という感じになります。

友達からすれば、PCの中にwordファイルが存在するようにしか見えません

しかし、実際にはUSBに存在するファイルを、マウントすることでPCで操作しているだけ、ということですね。

マウントの説明は以上になります。

不明な点、間違い、感想などあればコメントいただけると嬉しいです。

コメント

タイトルとURLをコピーしました