ホスト マシンから Docker のコンテナーにディレクトリをマウントするにはどうすればよいですか?
6 に答える
最終更新として、この機能は現在 Docker でリリースされています (ただし、@imiric によってリンクされたプル リクエスト以降、API は変更されています)。
次のようなコマンドを使用するだけです
docker run -v /tmp:/root myImage
イメージ内の/tmp
ようにホスト マシンからマウントするため。/root
ソース: https://docs.docker.com/engine/userguide/dockervolumes/
*更新 - 以下の回答を参照してください。これはもはや正解ではありません*
Docker は反復可能な実行環境を保証できなくなったため、設計上、それらをマウントすることはできません。
ただし、次のことができます。
ホストのルート ファイルシステムをインポートし、そこから新しいイメージを作成します。
tar -C / -c . | docker import - entend/custombase
'debootstrap' を実行した結果など、ブートストラップ ルート ファイルシステムをインポートします。(これが公式の「ベース」イメージの作成方法であることに注意してください。そのため、単純に「docker pull base」を実行する方がよい場合があります)
debootstrap precise ./bootstrap tar -C ./bootstrap -c . | docker import - entend/ubuntubase
コンテナの実行時に、ローカル ディレクトリの内容をコンテナに挿入します。
IMAGE=base; SRC=./stuff; DST=/tmp/stuff; CMD="echo hello world"; tar -C $src -c . | docker run $IMAGE -i /bin/sh -c "tar -C $DST -x; $CMD"
これにより、$IMAGE からコンテナーが実行され、ホスト ディレクトリ $SRC がコンテナー ディレクトリ $DST にコピーされ、コマンド $CMD が実行されます。
この最後の例は通常、コンテナー内でビルド コマンドを実行する前にソース コードを挿入するために使用されます。
この質問を更新するだけで、これはまもなく Docker で可能になります。
このプル リクエストは実際にこの機能を実装しており、すぐにマスターにマージされます。
この forkをインストールすれば、すぐに使用できます。
OS X と Windows のトリック
2 つの連続したマウント: ここでの多くの投稿では、2 つの boot2docker を使用している可能性があります。何も表示されない理由は、ホストからではなく、boot2docker からディレクトリをマウントしているためです。基本的に 2 回連続してマウントする必要があります。1 回目はホストからシステムにディレクトリをマウントし、2 回目は次のように boot2docker からコンテナーに新しいディレクトリをマウントします。
boot2docker にローカル システムをマウントします。
sudo mount -t vboxsf hostfolder /boot2dockerfolder
Linux コンテナーに boot2docker ファイルをマウントする
docker run -v /boot2dockerfolder:/root/containerfolder -i -t imagename
次に、ls
containerfolder 内で行うと、ホストフォルダーの内容が表示されます