Dockerのボリューム入門:bind mountでデータを永続化する
今回の記事は「Dockerのボリューム永続化が重要な理由とその方法」の続きとなります。
ボリューム永続化方法にはvolumesを使用する方法とbind mountの2つがあります。この記事ではbind mountについて掘り下げて解説していきます。
bind mountで永続化の利点と使うケース
bind mountを使用するとホストの特定のディレクトリをコンテナと共有できます。
メリット:コンテナ内からホストのファイルを直接参照でき、ソースコードの修正が即時反映されるため、開発作業に便利です。
使用例:ソースコードなど、頻繁に更新する必要があるデータを扱う場合に適しています。
リソースの準備(Dockerfileの準備)
今回は「python:3.11.10」のイメージを使用していきます。以下の内容でDockerfileを作成しましょう。
DockerfileFROM python:3.11.10
bind mountで永続化する
作成したDockerfileを使用し、bind mountで永続化する方法を見ていきましょう!
イメージのビルド
Dockerfileを作成したディレクトリで「docker build」コマンドを実行しましょう。
ターミナルdocker build . -t python
コンテナの起動(bind mount)
作成したイメージでコンテナを起動していきましょう。
オプションの解説
- --name(コンテナ名) : python
- -d : バックグラウンドで起動
- --rm : コンテナ停止時に削除
- -it : コンテナ内でシェルを操作できる環境を作る(-i -tの組み合わせになるのですが、詳しく書くと長くなるので割愛します)
- -v(volume) : /home/work:/home(<ホストのディレクトリ(※絶対パスである必要があります)>:<コンテナのマウント先ディレクトリ>)
- python : イメージ名
ターミナルdocker run --name python -d --rm -it -v /home/work:/home python
コンテナが起動していることを確認しましょう。
pythonファイルを作成
pythonコンテナにシェルをアタッチし、コンテナ内でpythonファイルを作成します。
pythonコンテナcd home echo 'print("hello")' > sample.py ls
sample.pyが作成されていることを確認します。
この時点でホスト側で作成しているDockerファイルが存在すると思います。つまり「ホスト側のファイルがコンテナに共有されている」ということになります。
ホスト側を確認する
ホスト側に作成したsample.pyが共有されることを確認しましょう。確認方法はホスト側で「ls」コマンドを実行します。
ターミナルls
他にもvscodeのホスト側ディレクトリを表示することでも確認できます。
このことから「コンテナのファイルがホスト側に共有されている」ということになります。
最後に
今回はbind mountでデータを永続化する方法についてハンズオン形式でやってみました。これでコンテナを削除したときにデータが消えてしまうということはないでしょう!
今回の記事が役に立った、ほかにも記事が見たいという方は最新情報を公式Xで配信しているのでフォローお願いします!