Dockerのバインド・マウントを利用して、「ホスト側のディレクトリ」と「コンテナ側のディレクトリ」を接続しアクセスできるようにします。
今回はubuntuイメージを利用してコンテナを起動します。適当なディレクトリにおいて、下記コマンドを実行します(本記事ではmacOSにてDocker for Macを利用)。
1 |
docker run -v $PWD:/tmp -it ubuntu /bin/bash |
「-v」オプションで「ホスト側ディレクトリ:コンテナ側ディレクトリ」のように指定します。上記ではホスト側(macOS)の$PWD(カレントディレクトリ)と起動したコンテナ側の/tmpディレクトリをマウントしています。
これでお互いのディレクトリを接続してファイル等を共有している状態となります。
実際にコンテナ内のtmpディレクトリにて、sample.txtファイルを作成してみます。
1 2 |
root@953be804ec03:/# cd tmp root@953be804ec03:/tmp# touch sample.txt |
docker runコマンドを実行したホスト側でも、sample.txtが生成されているのが確認できました。
1 2 3 |
ls sample.txt |
今度はホスト側でファイルを作成してみます。下記ではsample2.txtファイルを作成しています。
1 2 3 4 |
touch sample2.txt ls sample.txt sample2.txt |
コンテナ側でもsample2.txtが生成されているのが確認できます。
1 2 3 |
root@953be804ec03:/tmp# ls sample.txt sample2.txt |
※-vオプションに指定する「ホスト側ディレクトリ」が、もしディレクトリではない指定の場合は「データボリューム」が自動的に作成されてデータの永続化がされていることに気をつけて下さい。
もし下記のようなコマンドを実行した場合は、ホスト側のディレクトリではなく、testvolumeという名前のボリュームが作成されてコンテナ側のtmpディレクトリ内のデータが保持されるようになります。
1 |
docker run -v testvolume:/tmp -it ubuntu /bin/bash |
データボリュームの機能については下記の関連ページをご覧下さい。
関連ページ
Data Volume Container について [Dockerの永続化]