Dockerでコンテナを永続化しないといけない理由
Dockerでコンテナを作り、その中で作業をしていて誤ってコンテナを消してしまったときにコンテナの中の作業した内容もそのまま消えてしまうという問題がある.
しかし、永続化すればコンテナを消したとしてもコンテナの中の作業内容は消えずに保存しておくことができる。
Dockerの永続化のやり方
永続化のやり方はボリューム
とバインドマウント
の2つある。
やり方1 ボリュームを使った永続化
ボリュームとは
ボリューム
とはコンテナでの変更内容をDocker専用の管理領域にデータを保存するやり方。
パフォーマンスが高く、コンテナ削除後したとしてもコンテナでの変更内容はDocker専用の管理領域に残る。
①ボリュームの作り方
まず以下のコマンドでボリュームを作成する
docker volume create <ボリューム名>
②ボリュームが作成されているかを確認する
以下のコマンドでボリュームが作成されているかを確認する
docker volume ls
③ボリュームとコンテナを接続する
以下のコマンドでボリュームとコンテナを接続する
docker container run -it -v <ボリューム名>:<コンテナ内の絶対パス> <イメージ名>
例 コンテナの/app
というディレクトリの変更内容をmy-volume
というボリュームに接続することで/app
の中の変更内容はmy-volume
で永続化される。
docker container run -it -v my-volume:/app ubuntu
ボリュームのいろいろなコマンド
ボリュームの削除コマンド
docker volume rm <ボリューム名>
ボリュームの詳細情報を表示するコマンド
docker volume inspect <ボリューム名>
やり方2 バインドマウントを使った永続化
バインドマウントとは
ホストの任意のディレクトリをコンテナ内にマウントすることで、コンテナの変更内容をホストの任意のディレクトリに保存することができる。
そのため、コンテナを削除しても変更内容はホストの任意のディレクトリに残る。
ホスト環境の影響を受けやすいが、開発時に自分のディレクトリを編集するため便利である。
バインドマウントの作り方
docker container run -v <ホストの絶対パス>:<コンテナ内の絶対パス> <イメージ名>
例
自分のディレクトリの/docker/bind
とコンテナの中のディレクトリの/app
をバインドマウントするコマンド
docker container run -it -v /c/Users/okada/docker/bind:/app ubuntu