「docker volume」とマウントの違いは次のとおりです。「docker volume」は宣言的であり、「Docker Engine」自体はシステム内の特定のディレクトリを占有し、Docker はデフォルトで占有されたパスの下にボリュームを割り当てます。 . パス。マウントはマウント ポイントとしてパスを占有しません。
このチュートリアルの動作環境: linux7.3 システム、docker-1.13.1 バージョン、Dell G3 コンピューター。
長期間にわたって、複数のコンテナーが同じデータ ディレクトリへのアクセスを共有する必要がある場合、またはコンテナー内のデータを永続化する必要がある場合 (これらはすべて、ディレクトリのマウント (バインド マウント) の形式を使用して、ホスト上のディレクトリをコンテナ内の指定されたディレクトリにマウントします。この方法で問題は解決できますが、この方法には常にいくつかの欠点があります。
1. コンテナを別のサーバーにデプロイする場合は、実際のディスク マウント ディレクトリに従ってパスを変更する必要があります。
例: In Linux システムでは、マウント ディレクトリとして "/var/someDir" を使用することがよくあります。ただし、Mac では、/var/ は実際のディレクトリではありません。Mac ユーザーは、Linux よりも高度であると言うでしょう。 /var/ は使用しません。ユーザーはそれを必要としません;Windows システムでは、Windows ユーザーは次のように尋ねます: /var/ とは何ですか? CドライブとDドライブが最も合理的な区分です~~ #2。さまざまなオペレーティング システムのファイルとディレクトリのアクセス許可を使用すると、混乱したり怒ったりするでしょう?もともと Linux システムでのテストは非常に良好でしたが、その結果、Windows でのマウント パスにさまざまな問題が発生しました。ここでは詳しく説明しません。これらの問題が発生していない場合は、試してみてください。それを体験してください。でも、結局のところ、Linux と同じなので、Mac の方が優れています。
Docker にはマウント方法以外にデータを永続化できる Volume というものがありますが、恥ずかしい話ですが、私は Docker を長く使ってきて、マウントを Volume だと思ってきました。 Docker-compose ファイル内で、コンテナとホストのマウント パスのマッピング関係をボリューム セクションに記述することは問題ありませんが、これは常に誤解されています。 。 (派手な非難?)
実際には、「マウント」と「Docker ボリューム」は同じものではありません。特定の違いがあります。Docker ボリュームは宣言型です。Docker エンジンそれ自体はシステム内の特定のディレクトリ (通常、Linux では「/var/lib/docker」) を占有し、Mac と Windows の両方で調整できます。ボリュームを宣言すると、Docker はデフォルトで占有パスの下にあるボリュームにパスを割り当てます。例:
これを使用する場合は、ホスト パス名の代わりにボリューム名を使用してください。上記で「test_vol」という名前のボリュームを作成したと仮定します。
イメージとボリュームの両方を保存する必要があるため、ボリュームにより docker ディレクトリが拡張されることに注意してください。システム ディスクには置かないことをお勧めします。 . docker インストール ディレクトリを別のより大きなマウント ディスクに構成します。
この 2 つは動作が異なります。コンテナ外部の対応するディレクトリが空の場合、ボリュームはまずコンテナ内のコンテンツをコンテナ外部のディレクトリにコピーしますが、マウントはコンテナの内部ディレクトリにある外部ディレクトリを上書きします。ディレクトリ! ! ボリューム バインド マウントのもう 1 つの欠点は、nginx コンテナーの構成ファイル nginx.conf をマウントするなど、ファイルを直接マウントできないことです。
以上がdocker ボリュームとマウントの違いは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。