56

ホスト マシンから Docker のコンテナーにディレクトリをマウントするにはどうすればよいですか?

4

6 に答える 6

159

最終更新として、この機能は現在 Docker でリリースされています (ただし、@imiric によってリンクされたプル リクエスト以降、API は変更されています)。

次のようなコマンドを使用するだけです

docker run -v /tmp:/root myImage

イメージ内の/tmpようにホスト マシンからマウントするため。/root

ソース: https://docs.docker.com/engine/userguide/dockervolumes/

于 2013-09-27T19:47:31.740 に答える
13

*更新 - 以下の回答を参照してください。これはもはや正解ではありません*

Docker は反復可能な実行環境を保証できなくなったため、設計上、それらをマウントすることはできません。

ただし、次のことができます。

  1. ホストのルート ファイルシステムをインポートし、そこから新しいイメージを作成します。

    tar -C / -c . | docker import - entend/custombase
    
  2. 'debootstrap' を実行した結果など、ブートストラップ ルート ファイルシステムをインポートします。(これが公式の「ベース」イメージの作成方法であることに注意してください。そのため、単純に「docker pull base」を実行する方がよい場合があります)

    debootstrap precise ./bootstrap
    tar -C ./bootstrap -c . | docker import - entend/ubuntubase
    
  3. コンテナの実行時に、ローカル ディレクトリの内容をコンテナに挿入します。

    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 が実行されます。

    この最後の例は通常、コンテナー内でビルド コマンドを実行する前にソース コードを挿入するために使用されます。

于 2013-03-28T22:42:46.153 に答える
5

この質問を更新するだけで、これはまもなく Docker で可能になります。

このプル リクエストは実際にこの機能を実装しており、すぐにマスターにマージされます。

この forkをインストールすれば、すぐに使用できます。

于 2013-06-24T20:34:53.257 に答える
4

OS X と Windows のトリック

2 つの連続したマウント: ここでの多くの投稿では、2 つの boot2docker を使用している可能性があります。何も表示されない理由は、ホストからではなく、boot2docker からディレクトリをマウントしているためです。基本的に 2 回連続してマウントする必要があります。1 回目はホストからシステムにディレクトリをマウントし、2 回目は次のように boot2docker からコンテナーに新しいディレクトリをマウントします。

  1. boot2docker にローカル システムをマウントします。

     sudo mount -t vboxsf hostfolder /boot2dockerfolder
    
  2. Linux コンテナーに boot2docker ファイルをマウントする

     docker run -v /boot2dockerfolder:/root/containerfolder -i -t imagename
    

次に、lscontainerfolder 内で行うと、ホストフォルダーの内容が表示されます

于 2014-12-06T09:14:12.687 に答える