https://docs.docker.com/engine/userguide/dockervolumes/说:
“创建容器时初始化卷。如果容器的基本映像包含指定安装点的数据,则在卷初始化时将现有数据复制到新卷中。”
然而,这并不是我所观察到的。这是我的情景:
根据文档,我预计图像的/ opt / data下的文件将被复制到本地创建的卷。它没有发生..
<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
我有什么不明白的地方吗?
答案 0 :(得分:1)
这是因为您已经指定了主机目录。如果您没有指定主机目录,而是让Docker管理卷,它会按预期工作:
$ 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