親システムからDockerのコンテナにディレクトリをマウントするにはどうすればよいですか?
*更新-下記の回答を参照してください。これはもはや正しい回答ではありません*
Dockerは繰り返し実行可能な環境を保証できなくなったため、設計によりマウントすることはできません。
ただし、次のことができます。
ホストのルートファイルシステムをインポートし、そこから新しいイメージを作成します。
tar -C / -c . | docker import - entend/custombase
bootstrap rootファイルシステム、たとえば 'debootstrap'を実行した結果。)プルベース ')
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でリリースされるようになりました(ただし、プルリクエストが@imiricによってリンクされてからAPIが変更されています)。
次のようなコマンドを使用するだけです
docker run -v /tmp:/root myImage
マウントするために/tmp
ホストマシンから/root
画像内。
ソース: https://docs.docker.com/engine/userguide/dockervolumes/
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
その後、containerfolder内でls
を実行すると、hostfolderのコンテンツが表示されます
これは[〜#〜] is [〜#〜] Dockerで可能です:
データをアプリケーションコンテナーにマウントします。
docker run -t -i -rm -volumes-from DATA -name client1 ubuntu bash