Docker卷初始化 – 将数据从映像复制到容器

https://docs.docker.com/engine/userguide/dockervolumes/说:

“创build容器时会初始化卷,如果容器的基本映像包含指定安装点的数据,则在卷初始化时,现有数据将被复制到新卷中。

然而,这不完全是我所观察到的。 这是我的场景:

  1. 我创build了一个包含/ opt / data中的一些数据的容器
  2. 我提交这个容器并从中创build一个图像
  3. 我使用刚刚准备好的映像创build另一个容器,并创build一个将/ opt / data指向本地目录的卷。

根据文档,我预计图像的/ opt / data下的文件将被复制到本地创build的卷。 这没有发生..

<local>:~$ docker run --name test -it ubuntu bash root@76f42fce6ab7:/# mkdir /opt/data root@76f42fce6ab7:/# echo "foo" > /opt/data/my-data $ docker commit test test-with-data <local>:~$ docker run -it -v /tmp/test-volume:/opt/data test-with-data bash root@731b483527ad:/# ls /opt/data root@731b483527ad:/# root@731b483527ad:/# exit 

有什么我不明白的吗?

这是因为你已经指定了一个主机目录。 如果你没有指定一个主机目录,而是让Dockerpipe理这个卷,它就可以像你期望的那样工作:

 $ docker run --name test -it debian bash root@ac99b805a689:/# mkdir /opt/data root@ac99b805a689:/# echo "foo" > /opt/data/my-data root@ac99b805a689:/# exit exit $ docker commit test test-with-data a35463157fbee6180ed91c458288cf528da93a23bf340f44c3d2a7ff355fa2b1 $ docker run -it -v /opt/data/ test-with-data bash root@73f70c3b5518:/# ls /opt/data my-data root@73f70c3b5518:/# cat /opt/data/my-data foo