Dockerfile 中的Volume有什么意义,光用docker run -v效果相同吗?
PHP中文网
PHP中文网 2017-04-24 09:09:15
0
2
635

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

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

PHP中文网
PHP中文网

认证0级讲师

全員に返信(2)
迷茫

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

公式ユーザーガイドを見つけました: 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
小葫芦

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

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

  2. 对于 VOLUME 我更喜欢使用 docker-compose

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

    🎜 🎜 リーリー 🎜docker-compose は複数のサービスをバンドルして実行できます。上記の例は、Web サービスと DB サービスを個別に実行するもので、複雑な環境を構築するのに非常に適しています。 🎜
  • いいねを押す +0
    人気のチュートリアル
    詳細>
    最新のダウンロード
    詳細>
    ウェブエフェクト
    公式サイト
    サイト素材
    フロントエンドテンプレート
    私たちについて 免責事項 Sitemap
    PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!