Dockerfile里的VOLUME和docker run -v /path的时候挂载容器的挂载点效果是一致的,会在宿主机/var/lib/docker/volumes目录生成随机目录,发现–rm不单单是删除掉容器,还会删掉挂载点的数据.
首先不使用–rm看看效果
root@mlt-bddl12:~# docker run -tid --name busybox -v /guan busybox
8205d1bf429175c4574386b888554325305e4ebce22a1f8b5eed8b0e2c063985
root@mlt-bddl12:~# docker exec busybox touch /guan/test.file
root@mlt-bddl12:~# docker stop busybox
busybox
root@mlt-bddl12:~# find /var/lib/docker/ -name 'test.file' -type f
/var/lib/docker/volumes/76355ce179b7200956af161de6bd57cc73ade9598e0c462fb49bc57bccc3bf75/_data/test.file
root@mlt-bddl12:~# docker rm busybox
busybox
root@mlt-bddl12:~# find /var/lib/docker/ -name 'test.file' -type f
/var/lib/docker/volumes/76355ce179b7200956af161de6bd57cc73ade9598e0c462fb49bc57bccc3bf75/_data/test.file
上面看到是删掉容器挂载点的文件还存在
删掉这个还存在的文件后我们再试试–rm的效果
root@mlt-bddl12:~# docker run --rm -tid --name busybox -v /guan busybox
0dc33afbc742b0fc6f36a767254b99042b36e15afee84f18a3904b83919a4368
root@mlt-bddl12:~# docker exec busybox touch /guan/test.file
root@mlt-bddl12:~# find /var/lib/docker/ -name 'test.file' -type f
/var/lib/docker/volumes/76355ce179b7200956af161de6bd57cc73ade9598e0c462fb49bc57bccc3bf75/_data/test.file
/var/lib/docker/volumes/48cfdacff26dc495181028eb0af0192564d6f77c744f190d00b78eb0926d2b8f/_data/test.file
root@mlt-bddl12:~# docker stop busybox
busybox
root@mlt-bddl12:~# find /var/lib/docker/ -name 'test.file' -type f
/var/lib/docker/volumes/76355ce179b7200956af161de6bd57cc73ade9598e0c462fb49bc57bccc3bf75/_data/test.file
root@mlt-bddl12:~# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
root@mlt-bddl12:~#
上面命令可以看出使用了–rm选项停掉容器后(会自动删掉容器)会删掉挂载点)