Dockerコンテナにホストマシンのディレクトリをマウントする/マウントされたパスを確認する

Docker ツール

Dockerコンテナ内のパスにホストマシンのパスをマウントする複数の方法と、マウントされたパスを確認する方法を説明します。

docker runでマウントする

dockerコンテナの生成と同時にマウントするにはdocker run-vオプションを使います。

docker runでマウントしてコンテナに入る

docker runの-itオプションを組み合わせれば、コンテナの生成、起動、マウントと同時にアタッチ(コンテナに入る)事が出来ます。

docker createでマウントする

docker runとほぼ同じですが、docker createでもマウントできます。

複数のパスをマウントする

-vオプションを追加したぶんマウントを追加できます。

Dockerfileでマウントするパスを指定する

Dockerfileでマウントするパスを指定することもできます。

ただし指定できるのはコンテナ側のパスのみです。

以下のようなDockerfileを作ります。

イメージを作ります。

作ったイメージを使ってコンテナを作ります。

この時マウントは指定しません。

ホストマシンのどこにファイルが作られたのか確認します。

docker inspectでマウントされたパスを確認します。

/var/lib/docker/volumes/147eb~略/_dataというホストのパスにマウントされているようです。

MacOSやWindowsの場合は実際にこのパスではなく、仮想Linux環境上のパスになっています。

ホスト側のパスが指定できないので、この方法はあまり使わないかと思います。

docker-composeでマウントする

docker-compose.ymlにマウントの設定を書いておくこともできます。

Dockerfileを作っておきます。

docker-compose.ymlは以下のようにします。

コンテナを作成します。

以下のコマンドでコンテナに入る事が出来ます。

ホスト側にも./mydata/sample.txtが作られる事が確認できます。

この方法が一番管理しやすく良いやり方だと思います。

コンテナ作成後のマウントの追加はできない

docker rundocker createで作成したコンテナに後からマウントを追加することはできません。

コンテナを作り直すのが良いでしょう。

マウントされているパスを確認する

コンテナにマウントされているパスを確認するには、docker inspectを使います。

MountsのSourceがホストマシン側のパス、Destinationがコンテナのパスになります。

以上です。

コメント/ピンバック

タイトルとURLをコピーしました