1. ホーム
  2. docker

[解決済み] docker がホスト上のボリュームをマウントする

2022-05-04 13:38:37

質問

を使用して、ボリュームを持つDockerコンテナ間でフォルダを共有することに成功しました。

docker run -v /host/path:/container/path ...

しかし、私の疑問は、これと VOLUME というコマンドをDockerfileに記述します。

VOLUME /path

私が使っている画像は VOLUME コマンドを使用して、それを私のホストと共有する方法を知りたいのです。私はそれを -v コマンドの両方が必要なのかどうかわかりませんでした。 -vVOLUME .

解決方法は?

その VOLUME コマンドは、コンテナ内のディレクトリをマウントし、そのディレクトリ内で作成または編集されたファイルをホストディスクに保存します。 コンテナのファイル構造の外側 ユニオンファイルシステムをバイパスします。

このアイデアは、Dockerコンテナ間でボリュームを共有することができ、それを参照するコンテナ(実行中または停止中)がある限り、ボリュームが存在し続けるというものです。

他のコンテナに既存のボリュームをマウントさせる (コンテナ間で効果的にボリュームを共有する) こともできます。 --volumes-from コマンドを実行します。

との根本的な違いは VOLUME-v はこうです。 -v は、オペレーティングシステムの既存のファイルをドッカーコンテナ内にマウントし VOLUME 新しい空のボリュームを作成します。 をホスト上に作成し、コンテナ内にマウントします。

  1. を定義したDockerfileがあります。 VOLUME /var/lib/mysql .
  2. docker イメージをビルドして、タグを付けます。 some-volume
  3. コンテナを実行する

そして

  1. このボリュームを使用したい別のドッカーイメージがある場合
  2. でdockerコンテナを実行します。 docker run --volumes-from some-volume docker-image-name:tag
  3. これで、Dockerコンテナが実行され、そのボリュームが some-volume にマウントされている /var/lib/mysql

--volumes-from は、ボリュームの場所に存在するすべてのものの上にマウントします。つまり、もしあなたが /var/lib/mysql の場合、ボリュームの内容に置き換わります。