先日はボリュームを勉強したので、今日はバインドマウントを試してみます。
バインドマウントとは
公式に色々書いてある。
- 初期の頃からある方式
- ボリュームの方が新しく機能が多い
- ボリュームのように、docker サイドでボリュームを作る(新しいディレクトリを作る)のではなく、docker が動作するホスト上のファイルやディレクトリをコンテナにマウントするところが大きな違い
とりあえず動かしてみよう
何はともあれ動かしてみないと始まりません。
以下のコマンドでホスト上のボリュームをマウントしてコンテナ起動できました。
>docker run -d -it --name devtest --mount type=bind,source=C:\Users\hoge\target,target=/app nginx:latest 470fa8f24cb65a29b1f3c106160c1e8635cfa3597afcb857a7b06a279b9ea1b2
--mount でbind
を指定します。source にはホストのマウント対象フォルダのパスを。Windows 端末を仕様していたので、このように記載しています。
target は、コンテナのどこにマウントするか、を表しています。
さて、コンテナに入ってみます。
>docker exec -it devtest bash
app フォルダを探します。
# ls -la ... drwxrwxrwx 1 root root 512 Sep 14 15:53 app
ありました。
ファイルを作成してみます。
# cd app /app# echo test > test.txt /app# ls test.txt
exit してコマンドプロンプトで、ファイルが存在して中にtest
と書いてあることを確認します。
>type target\test.txt test
ちゃんと出来ていました。
-v オプションでも出来る
>docker run -d -it --name devtest -v "C:\Users\hoge\target":/app nginx:latest
-v で、ホスト側のパス
:コンテナのマウント対象のパス
としても指定できます。
ボリュームマウントの記事はこちら
バインドマウントよりも、現在はボリュームマウントの方が主流です。 詳細は以下の記事に書きました。