ドッカーイメージには、データがあらかじめ入力されたボリュームを含めることができます。これを実現するには、Dockerfile
にディレクトリを作成し(たとえばCOPY
またはRUN
を使用)、それをボリュームとして宣言します。 、
FROM php:7-fpm
COPY ./app /var/www/html
VOLUME /var/www/html
新しいボリュームを作成します。このイメージから新しいコンテナを作成する画像の/var/www/html
ディレクトリからのデータでそれを初期化し、内部にそれをマウントします。これは、ボリューム内のアプリケーションコードが含まれているイメージを構築することができますあなたの新しいコンテナは同じ場所にあります。
詳細についてはthe documentation比較:
ドッカーrunコマンドは、ベース画像内の指定された場所に存在する任意のデータを新たに作成されたボリュームを初期化します。 /myvol
で新しいマウントポイントを作成するには、docker run
の原因となる画像で
FROM ubuntu
RUN mkdir /myvol
RUN echo "hello world" > /myvol/greeting
VOLUME /myvol
このDockerfile結果と新たに作成したボリュームにgreeting
ファイルをコピーします。たとえば、次のようDockerfileスニペットを考えてみましょう。
これは単にdocker run
を使用してアプリケーションイメージを起動することができます:
docker run -d --name app my_application_image
その後、あなたはnginxのコンテナを実行し、--volumes-from
フラグを使用して、アプリケーションコンテナとして同じボリュームを使用するように設定することができます
docker run -d --name web --link app:app --volumes-from app my_nginx_image
この後、両方のコンテナに取り付けられたアプリケーションコードを含むDockerボリュームがになります。
これは私の質問の「一時的な」部分をカバーしていますか?私の理解から、このメソッドは、コンテナが終了した後、孤立したボリュームを残していました。私はこれを避けることを望んでいました。 – phu
コンテナのボリュームは、少なくとも['--volumes'または' -v'フラグを使用するときは削除してください(https://docs.docker.com/engine/reference/commandline/rm/# /オプション)。 – helmbert