まめぞうの技術メモ

IT関連で勉強したことをメモします

docker でドライブマウントする方法(バインドマウント編)

先日はボリュームを勉強したので、今日はバインドマウントを試してみます。

tech.mamezou00000.com

バインドマウントとは

公式に色々書いてある。

matsuand.github.io

  • 初期の頃からある方式
  • ボリュームの方が新しく機能が多い
  • ボリュームのように、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 で、ホスト側のパス:コンテナのマウント対象のパス としても指定できます。

ボリュームマウントの記事はこちら

バインドマウントよりも、現在はボリュームマウントの方が主流です。 詳細は以下の記事に書きました。

tech.mamezou00000.com