Dockerコンテナーに複数のボリュームをマウントしますか?


151

私は私のようなもので私のホストのディレクトリを私のようなコンテナにマウントできることを知っています

docker run -t -i -v '/on/my/host:/on/the/container' ubuntu /bin/bash

複数のホストとコンテナのペアを作成する方法はありますか?たとえば、コンマ区切りのリスト、または配列を渡しますか?


私はドキュメントの用語の現在の状態を理解しているので、ボリューム(質問のタイトル)をマウントすることはできません。ホストフォルダーにバインドマウントを多数持つことができます(これは質問の本文で要求されます)
Alexei Martianov

回答:


259

複数の-v引数を渡します。

例えば:

docker -v /on/my/host/1:/on/the/container/1 \
       -v /on/my/host/2:/on/the/container/2 \
       ...

2
さて、私はこれをまったく同じ方法で行っていますが、2つ目を呼び出そうとすると、見つからないというメッセージが表示されます。
母親の2015年

docker run -v / home / usr / workspace / proj / WebContent / file / username:/ mycode -v / home / usr / workspace / proj / WebContent / file:/ tst gcc:4.9 sh -c 'cd mycode; gcc -o myapp ./mycode.c; cd tst; ./myapp <./test.txt 'これは私のコマンドです。最初のボリュームにあるmycode.cをコンパイルしようとしていますが、同じファイルに別のボリュームのstdinを与えています。どうすればいいのですか?
母親の2015年

1
@YehCheez、私はこれを(強く)別の質問として開き、再生器を構築することをお勧めします。(公開レジストリのDockerイメージでバグを再現し、質問で指定されたスクリプトにすべてのローカル依存関係を作成できる場合、それは理想的です)。
Charles Duffy、

常に絶対パスが必要ですか?
xatzistnr 2017

3
宛先は常に絶対でなければなりません。ソースは、絶対パスまたは名前付きボリュームの識別子のいずれかである必要があります。後者のドキュメントについては、docs.docker.com / engine / admin / volumes / volumesを参照してください。
Charles Duffy

19

Dockerはを使用するように移行することを推奨するようになりました--mount

複数のボリュームのマウントについても、現在のDockerドキュメントで詳しく説明されています。

送信元:https : //docs.docker.com/storage/bind-mounts/

$ docker run -d \
  -it \
  --name devtest \
  --mount type=bind,source="$(pwd)"/target,target=/app \
  --mount type=bind,source="$(pwd)"/target,target=/app2,readonly,bind-propagation=rslave \
  nginx:latest

元の古い答えはまだ機能するはずです。答えを最新の最もよく知られた方法に合わせようとするだけです。


Dockerが移行を推奨する唯一の理由を追加する価値があります。彼らの調査によると--mountは使いやすく、オプションが多いからです。-vまたは--mountのどちらを使用しても問題ありません。これは、個人の好みとニーズに依存します。
KillerKode


6

ボリュームに読み取り専用または読み取りと書き込みのみを設定できます

docker -v /on/my/host/1:/on/the/container/1:ro \

docker -v /on/my/host/2:/on/the/container/2:rw \

1
デフォルトのオプションはどれですか?
Hammad Dar 2019

-9

またはあなたがすることができます

docker run -v /var/volume1 -v /var/volume2 DATA busybox true

4
これはOPの目的ではありません。これにより、コンテナー内にボリュームが作成され、ホストにバインドされません。
イオアニス2014年

8
あなたは正しいです:docker run -v / var / volume1:/ container / volume1 -v / var / volume2:/ container / volume2 DATA busybox true
Joost van der Laan
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.