はじめに
Docker触ったことあるけど体系的に学びたいと思い「仕組みと使い方がわかるDocker&Kubernatesのきほんのきほん」を読み、マウントについて全然理解できてなかったと気づいたため記事に残します。
マウントとは
マウント(mount)とは英語で「取り付ける」という意味であり、その意味通りマウントの対象をOSやソフトウェア、コンテナなどに取り付け、支配下に置くことです。
マウントすると何がいい?
コンテナなど削除前提のモノの場合、もしデータがコンテナ内にあるとコンテナの削除のタイミングでデータも消えてしまいます。そのためコンテナでは外にデータを保存し、アクセスするのが一般的で、このことをデータの永続化と言います。また、この外の保存場所がマウントした記憶領域になります。
Dockerの3種類のマウント
マウントの方式にはボリュームマウントとバインドマウントと一時メモリマウントがあります。
ボリュームマウント
ボリュームマウントはDocker Engineの管理下にボリュームを作成し、コンテナにマウントする方式です。
名前を指定するだけで簡単に使用できたり、手軽に扱えますがボリュームに対して直接的な操作がしづらいので「仮で使う場合」や「消してはいけない場合」に使われることが多いです。
バインドマウント
バインドマウントはDocker Engineの管理していない場所のディレクトリなどにマウントする方法です。
フォルダなど直接ファイルを作成したり編集したりすることができるため「頻繁に触りたい場合」に使われることが多いです。
一時メモリマウント
一時メモリマウントはその名の通りメモリをマウントする方法です。
ディスクを使用するより高速に読み書きがでるため「アクセスを早くしたい場合」に使われることが多いです。しかしメモリのデータはDocker Engineの停止やホストの再起動などで消滅します。
関連コマンド
記憶領域を作成するコマンド
docker volume create ボリューム名
記憶領域を削除するコマンド
docker volumen rm ボリューム名
記憶領域をマウントするコマンド
ボリュームマウントの記述方法
docker run (省略) -v ボリューム名: コンテナの記憶領域パス (省略)
バインドマウントの記述方法
docker run (省略) -v 実際の記憶領域パス:コンテナの記憶領域パス (省略)
おわりに
マウントについてほんわりとした理解から少しだけ理解が増しました。
それぞれの使用用途についてもよくわかりました。
記事の中で間違い、不備がありましたらコメントお願いします。