Dockerfile 中有一个 VOLUME 命令,可以把挂载一个目录到主机目录,但是在主机目录下的名字是随机的,除非用户用 -v 指定,但是如果在 Dockerfile 中不用 VOLUME,只在运行时用 -v 指定也能达到效果,那么就有一个问题,VOLUME 在 Dockerfile 中到底有多少用,在 Host 下创建了几个用户一般找不到的文件到底有多少使用价值,大部分情况下用户都是要手动使用 -v 重新指定挂载目录,那 VOLUME 命令就显得很鸡肋。
VOLUME 是否有什么比较重要的用处我没有理解呢?
私もこれに関していくつか疑問があったので、情報を見つけて意見を述べさせていただきました。
公式ユーザーガイドを見つけました: 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 を指定したフォルダーは、異なるコンテナー間で共有でき、ローカルで変更できます。
次に、異なるコンテナ間で共有する必要があり、ローカルで変更する必要がない状況をリストします。
まず、コンテナ内で動的データを取得する方法を理解します。
後の 2 つのコマンドはローカルで変更する必要はありませんが、生成される動的データは共有する必要がある場合があります。1. ローカルで提供、コンテナにマウント
2. リモートで提供、リモートからダウンロード
3. コンテナ内で生成して提供
git clone などのダウンロード コマンドは、ローカル フォルダーをマウントせずに、git サーバーからコードを直接プルします。
jekyll (静的 Web サイト ジェネレーター) などのコマンドを生成するには、コード フォルダーをマウントし、ビルド ディレクトリに生成された静的 Web ページ ファイルを Apache サーバーに提供する必要があります。その後、ビルド ディレクトリを指定する必要があります。ボリュームとして。
VOLUME
コマンドは主に開発環境で役立ちます:VOLUME
命令主要是在开发环境下非常有用:编辑代码的时候,直接在宿主机里进行编辑,然后在 docker 里同步跑,无需反复启动关闭,这能发挥开发环境的最高性能。
对于
VOLUME
我更喜欢使用docker-compose
VOLUME
の場合は、docker-compose
を使用して指定することを好みます: