Dockerでは、コンテナ内部のデータは**デフォルトでは揮発性(消える)**です。
そのため、ストレージ(特にボリュームやバインドマウント)を適切に扱うことが、アプリケーションの永続性と保守性を支える基盤になります。
コンテナは軽量で一時的なプロセス空間です。
以下の例のように、デフォルトではコンテナを停止/削除するとデータも一緒に消える仕様です。
# /data にファイルを保存しても、コンテナ削除で消える
docker run -it ubuntu
> echo "hello" > /data/test.txt
> exit
docker ps -a # コンテナ削除
docker rm [コンテナID]
📌 ポイント:
ストレージを必要とする代表的なケースは以下の通りです。
ユースケース | 解説 |
---|---|
DBのデータ保存 | MySQL/PostgreSQLのデータファイルを永続化 |
ファイルのアップロード | Webアプリからアップされた画像などを保存 |
設定ファイルの共有 | 開発環境でホストの設定ファイルを反映 |
ログ保存 | ログデータをホストに書き出すことで可視化・収集 |
例:MySQLコンテナのデータが消えてしまう場合
docker run -d --name mysql -e MYSQL_ROOT_PASSWORD=pass mysql
# 一見起動するが、コンテナ削除時にDBごと消える
docker rm -f mysql
これを防ぐには、後述する「ボリューム」や「バインドマウント」を使う。