我想将容器共享卷中的数据提交到映像。我好像做不到?我的印象是,这在 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 中启动第二个容器,容器 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
显然这是设计使然。有人知道为什么 docker 不允许我将卷数据保存到提交吗?无论如何,是否可以在容器之间共享文件,然后将它们保存到映像中?我觉得我一定缺少什么?特别是在共享数据的同时避免主机依赖性。