1. ホーム

[解決済み】DockerFileの "VOLUME "命令を理解する。

2022-04-08 18:34:32

質問

以下は、私のDockerfileの内容です。

FROM node:boron

# Create app directory
RUN mkdir -p /usr/src/app

# Change working dir to /usr/src/app
WORKDIR /usr/src/app

VOLUME . /usr/src/app

RUN npm install

EXPOSE 8080

CMD ["node" , "server" ]

このファイルで私が期待しているのは VOLUME . /usr/src/app マウントの指示 マウントされるホストの現在の作業ディレクトリの内容 /usr/src/app フォルダを作成する。

この方法が正しいかどうか教えてください。

解決方法は?

公式のdockerチュートリアルに書いてあります。

データボリュームは、1つまたは複数のコンテナ内にある、ユニオンファイルシステムをバイパスする特別に指定されたディレクトリである。データボリュームは、永続的なデータや共有データに対していくつかの便利な機能を提供します。

  • ボリュームはコンテナ作成時に初期化される。コンテナのベースイメージに指定されたマウントポイントにデータがある場合。

    を作成すると、既存のデータは新しいボリュームにコピーされます。

    を初期化します。(をマウントする場合には適用されないことに注意してください。

    ディレクトリを作成します)。

  • データボリュームはコンテナ間で共有し、再利用することができます。

  • データボリュームへの変更は直接行われます。

  • イメージのアップデート時に、データボリュームへの変更は含まれません。

  • データボリュームは、コンテナ自体が削除されても保持されます。

Dockerfile は、ボリュームの宛先のみを指定することができます。 内部 コンテナ。 /usr/src/app .

コンテナを実行するとき、例えば docker run --volume=/opt:/usr/src/app my_image を選択した場合、あなたは かもしれません が、そのマウントポイントを指定する必要はありません ( /opt ) をホストマシン上で実行します。を指定しない場合は --volume 引数を指定すると、マウントポイントは自動的に選択され、通常は /var/lib/docker/volumes/ .