
【Docker基礎】記憶領域をマウントするコマンド
コンテナのデータを消さずに保持したり、ホスト上のファイルをコンテナ内で利用したりしたい場合、マウントを使います。
前回、ボリュームマウントとバインドマウントの違いを学びましたが、ここでは実際にマウントを指定する方法や、ボリュームを管理するコマンドなどを解説します。

記憶領域をマウントする基本
「-v」オプション
マウントを行うときは、docker run
(または docker container run
)コマンドのオプションとして -v
を使います。
【書式】
docker run ... -v <マウント元>:<マウント先> ...
- マウント元: ホスト側のディレクトリ、または Docker ボリューム名
- マウント先: コンテナ内で使用したいパス
バインドマウント vs. ボリュームマウント
- バインドマウント:
-v <ホスト上のパス>:<コンテナ側のパス>
- ボリュームマウント:
-v <ボリューム名>:<コンテナ側のパス>
どちらも -v
オプションで指定しますが、マウント元の書き方が異なるだけです。
記憶領域を作る
バインドマウントの場合

- ホスト上にフォルダやファイルを作っておく
- Windowsなら
C:\Users\ユーザー名\Desktop\docker
など、Mac/Linuxなら~/docker
など好きな場所にディレクトリを作る。
ボリュームマウントの場合

- Docker 上でボリュームを作成
- コマンド例:
docker volume create <ボリューム名>
- 必要なくなれば:
docker volume rm <ボリューム名>
ボリューム管理コマンドの概要
コマンド | 内容 | 省略 | 主なオプション |
---|---|---|---|
create | ボリュームを 作成 する | 不可 | あまり指定しない |
inspect | ボリュームの詳細情報を表示 | 不可 | あまり指定しない |
ls | 既存ボリュームの一覧を表示 | 不可 | あまり指定しない |
prune | 未使用ボリュームを一括削除 | 不可 | あまり指定しない |
rm | 指定したボリュームを削除 | 不可 | あまり指定しない |
実際のコマンド例
バインドマウントのよくある例
docker run --name my-web -d -v C:\Users\myuser\Desktop\docker\html:/usr/local/apache2/htdocs -p 8080:80 httpd
説明
C:\Users\myuser\Desktop\docker\html
(ホスト側のフォルダ)を/usr/local/apache2/htdocs
(コンテナ内)にマウント- これでホスト上の
html
フォルダを編集すると、コンテナ内からも即時に反映される。
ボリュームマウントのよくある例
docker volume create my-volume
docker run --name my-db -d -v my-volume:/var/lib/mysql -p 3306:3306 mysql:5.7
説明
my-volume
(Docker ボリューム)を/var/lib/mysql
(コンテナ内)にマウント- DB データはコンテナが消えても
my-volume
に残るので安全
マウントのイメージ:ショートカットのようなもの
イメージとしては、コンテナ内にあるディレクトリパス(例: /usr/local/apache2/htdocs
)が、実際には外部(ホストのディレクトリまたは Docker ボリューム)へショートカットされている状態。
コンテナからすると「そこにデータがある」ように見えますが、本当の実体は別の場所にあるという仕組みです。
まとめ
- マウントの基本
・-v <マウント元>:<マウント先>
をdocker run
コマンドに付与 - バインドマウント
・ホスト上の既存ディレクトリやファイルをコンテナに見せる方式
・自由に編集できるが OS パス依存がある。 - ボリュームマウント
・Docker が管理する専用領域を使う方式
・OS差異を気にしなくて良いが、ホストから直接編集しにくい。 - 使い分け
・頻繁に編集するデータ → バインドマウント
・環境依存を避けたい or ホスト側から直接編集しない → ボリュームマウント
次のコンテンツでは、バインドマウントする具体例について詳しく解説します。実際にコマンドを打ちながら、ホストのディレクトリをコンテナ内にマウントする手順を学びましょう。