クラウドとコンテナの基礎
Dockerで、コンテナが書いたデータを残すための名前付きボリュームとバインドマウントの説明として、正しいものはどれか。
- AボリュームはDockerが管理する領域に、バインドマウントはホストの指定したディレクトリに置かれ、どちらもコンテナを削除しても残る
- B名前付きボリュームのデータはコンテナを削除しても残るが、バインドマウントのデータは、コンテナを削除するとホストのディレクトリからも一緒に消える
- Cどちらもコンテナの書き込み可能な層の一部として作られるので、docker rm でコンテナを削除すると、データも一緒に消える
答えと解説を見る
正解:A. ボリュームはDockerが管理する領域に、バインドマウントはホストの指定したディレクトリに置かれ、どちらもコンテナを削除しても残る
コンテナの書き込み可能な層に書いたデータは、コンテナを削除すると一緒に消えるので、残したいデータはコンテナの外に置きます。名前付きボリュームは、Dockerが管理する領域に作られ、docker volume rm などで明示的に消すまで残ります。バインドマウントは、ホストの任意のディレクトリをコンテナの中に見せる方法で、データはホストのファイルとしてそのまま残ります。ホストで編集したソースコードをすぐに反映させたい開発の場面ではバインドマウントが、データベースのデータのように管理をDockerに任せたいものにはボリュームが、よく使われます。
- A. 正しい。置き場所は違いますが、どちらもコンテナの外にあるので残ります。
- B. バインドマウントのデータはホストのディレクトリにあるファイルそのものなので、コンテナを削除しても消えません。
- C. どちらもコンテナの書き込み可能な層の外にあるので、コンテナを削除しても残ります。