ホームページ  >  に質問  >  本文

Dockerfile 中的Volume有什么意义,光用docker run -v效果相同吗?

Dockerfile 中有一个 VOLUME 命令,可以把挂载一个目录到主机目录,但是在主机目录下的名字是随机的,除非用户用 -v 指定,但是如果在 Dockerfile 中不用 VOLUME,只在运行时用 -v 指定也能达到效果,那么就有一个问题,VOLUMEDockerfile 中到底有多少用,在 Host 下创建了几个用户一般找不到的文件到底有多少使用价值,大部分情况下用户都是要手动使用 -v 重新指定挂载目录,那 VOLUME 命令就显得很鸡肋。

VOLUME 是否有什么比较重要的用处我没有理解呢?

PHP中文网PHP中文网2707日前603

全員に返信(2)返信します

  • 迷茫

    迷茫2017-04-24 09:11:15

    私もこれに関していくつか疑問があったので、情報を見つけて意見を述べさせていただきました。

    公式ユーザーガイドを見つけました: https://docs.docker.com/engine/userguide...

    そこから何かを学びました: VOLUME は単なるステートメントではなく、指定されたパスをリロードします。これも検査コンテナーを通じて発見しました。

    これは Dockerfile で指定された VOLUME であり、-v は指定されていません: コンテナのマウント情報を表示します。 リーリー

    これは前の内容に基づいており、-v を指定してコンテナのマウント情報を表示します。

    リーリー

    次に、/var/lib/docker/volumes/b3e2dcacd3f9f40b43ccd5773d45ca74f0f49b02d3da17749cb378ff9f59bb67/_data ディレクトリに移動して見てみると、おおよそのことがわかります。

    /var/lib/docker/volumes/b3e2dcacd3f9f40b43ccd5773d45ca74f0f49b02d3da17749cb378ff9f59bb67/_data目录下看一下,大致就清楚了。

    你可以把VOLUME理解为,从镜像中复制指定卷的文件夹到本地/var/lib/docker/volumes/xxxxxxxxx/文件夹VOLUME は、指定したボリュームのフォルダーをイメージからローカルの /var/lib/docker/volumes/xxxxxxxxx/folder にコピーし、ローカル フォルダーをコンテナー内にマウントするものとして理解できます。 。

    基本的には、ローカルフォルダーをマウントするのと同じです。

    追加を続けます。VOLUME は実際に新しいフォルダーをローカルに作成してマウントするため、実際にはコンテナー内のフォルダーには次の 3 つの状況があります。
    1. VOLUME も -v も指定されていません。
    2. VOLUME は -v なしで指定されます。この種のフォルダーは異なるコンテナー間で共有できますが、ローカルで変更することはできません。
    3. -v を指定したフォルダーは、異なるコンテナー間で共有でき、ローカルで変更できます。

    次に、異なるコンテナ間で共有する必要があり、ローカルで変更する必要がない状況をリストします。

    まず、コンテナ内で動的データを取得する方法を理解します。
    1. ローカルで提供、コンテナにマウント
    2. リモートで提供、リモートからダウンロード
    3. コンテナ内で生成して提供

    後の 2 つのコマンドはローカルで変更する必要はありませんが、生成される動的データは共有する必要がある場合があります。

    git clone などのダウンロード コマンドは、ローカル フォルダーをマウントせずに、git サーバーからコードを直接プルします。
    jekyll (静的 Web サイト ジェネレーター) などのコマンドを生成するには、コード フォルダーをマウントし、ビルド ディレクトリに生成された静的 Web ページ ファイルを Apache サーバーに提供する必要があります。その後、ビルド ディレクトリを指定する必要があります。ボリュームとして。

    返事
    0
  • 高洛峰

    高洛峰2017-04-24 09:11:15

    VOLUME コマンドは主に開発環境で役立ちます: VOLUME 命令主要是在开发环境下非常有用:

    1. 编辑代码的时候,直接在宿主机里进行编辑,然后在 docker 里同步跑,无需反复启动关闭,这能发挥开发环境的最高性能。

    2. 对于 VOLUME 我更喜欢使用 docker-compose <オル>

    3. コードを編集するときは、ホスト マシン上で直接編集し、Docker で同期して実行します。これにより、開発環境のパフォーマンスを最大化できます。
  • VOLUME の場合は、docker-compose を使用して指定することを好みます:

    🎜 🎜 リーリー 🎜docker-compose は複数のサービスをバンドルして実行できます。上記の例は、Web サービスと DB サービスを個別に実行するもので、複雑な環境を構築するのに非常に適しています。 🎜

    返事
    0
  • キャンセル返事