「ドッカーの実行」を行うたびに、新しいコンテナを作成していることはあまりありません。新しいコンテナごとに新しいボリュームが作成されます。
データは永続化されていますが、書き込んだコンテナからデータを読み取っていません。今回
$ docker run -ti myimage echo hello world
$ docker run -ti myimage echo hello world
それを実行して、ボリュームを見てみましょう
$ docker build . -t myimage
Sending build context to Docker daemon 2.048 kB
Step 1 : FROM ubuntu
---> bd3d4369aebc
Step 2 : VOLUME /data
---> Running in db84d80841de
---> 7c94335543b8
通常通りに建てられ
FROM ubuntu
VOLUME /data
Dockerfile問題に
サンプルを説明するため
例
$ docker volume ls
DRIVER VOLUME NAME
local 078820609d31f814cd5704cf419c3f579af30672411c476c4972a4aad3a3916c
local cad0604d02467a02f2148a77992b1429bb655dba8137351d392b77a25f30192b
「docker rm」コマンドには、コンテナに関連付けられたボリュームをクリーンアップする特別な「-v」オプションがあります。
$ docker rm -v $(docker ps -qa)
同じドッキングウィンドウの画像を使用してデータコンテナ
を使用する方法、前の例に建てられたその唯一の目的は、ボリューム
$ docker create --name mydata myimage
打ち上げ別だ介してデータを永続化するためにあるコンテナを作成"/ data"ボリュームにデータを保存するコンテナ
$ docker run -it --rm --volumes-from mydata myimage bash
[email protected]:/# echo hello world > /data/helloworld.txt
[email protected]:/# exit
起動
$ docker run -it --rm --volumes-from mydata myimage cat /data/helloworld.txt
hello world
クリーンアップデータを取得する第二の容器は、単に容器を除去し、そのボリュームがクリーンアップされていることを確認するための「-v」オプションを指定します。
$ docker rm -v mydata
注:
- 「ボリューム-から」パラメータは、すべてのデータが「MYDATA」コンテナ
- コンテナを実行している「RM」オプションに関連した基本的なボリュームに保存されることを意味それらが自動的に削除されることを保証し、一時的なコンテナに役立ちます。
ありがとうございました。しかし、なぜ私はDockerfileからではなく、コマンドラインから正常に名前付きボリュームを使うことができますか?それは私が混乱していることです(私の更新を見てください)。公式文書では、もはやボリュームコンテナを使用しないようにして、さらに混乱させるべきだと述べています。 –
@ D.Mill名前付きボリュームは、データ管理のもう一つのオプションです。これを新しいストレージプラグインと組み合わせると最も効果的です。ここでは、Dockerfileの中で宣言されたボリュームをサポートし、それが期待どおりに動作していなかった理由を説明する、あなたの質問に集中していました。結論として、Dockerファイルは実行時ではなくビルド時に使用されるため、ボリュームをローカル記憶域(名前付きまたはそれ以外)にマップできない理由があります。 Dockerfilesはイメージを構築し、イメージはコンテナを作成するために使用されます。コンテナを実行している場合にのみ、ストレージの場所を指定します。 –