コンテナーの共有ボリューム内のデータをイメージにコミットしたいと考えています。私はそれを行うことができないようですか?これはおそらくDockerでは不可能だという印象を受けますが、それはホストにデータを残さないという哲学全体と完全に矛盾しているように思われるので、これを行う方法があるに違いないと私の一部は考えています.
1.第1ターミナル
ターミナル 1 でコンテナーをボリュームで起動します。
$ docker run -it -v /data ubuntu:14.10 /bin/bash
root@19fead4f6a68:/# echo "Hello Docker Volumes." > /data/foo.txt
2.第2ターミナル
ターミナル 2 で 2 番目のコンテナーを起動します。コンテナー 1 のファイルがあるため、docker ボリュームはすべて機能しています。
$ docker run -it --volumes-from 19fead4f6a68 ubuntu:14.10 /bin/bash
root@5c7cdbfc67d8:/# cat /data/foo.txt
Hello Docker Volumes.
3. 第3ターミナル
私の理解では、差分のみを画像にコミットできるので、両方のコンテナの差分を確認します。なんらかの奇妙な理由で、私の変更が表示されません!??
$ docker diff 19fead4f6a68
A /data
$ docker diff 5c7cdbfc67d8
A /data
4. ターミナル1に戻ります
ボリューム フォルダの外にファイルを作成します
root@19fead4f6a68:/# echo "Docker you are a very strange beast...." > /var/beast.txt
5. ターミナル3に戻ります
コミットできる変更がいくつかありますが、これは他のコンテナーと共有する必要のあるボリュームからのデータではないため、かなりイライラしています。
$ docker diff 19fead4f6a68
A /data
C /var
A /var/beast.txt
明らかにこれは設計によるものです。ドッカーがボリュームデータをコミットに保存できない理由について、誰か考えがありますか? コンテナ間でファイルを共有し、それらをイメージに保存する方法はありますか? 私が見逃している何かがあるに違いないような気がしますか?特に、ホストへの依存を回避しながらデータを共有するという目的のために。