Docker 数据管理挂载目录或文件
通过前面小节的学习我们知道:使用Docker时,产生的数据默认是保存到容器的UnionFS的读写层中的。那么,我们不妨思考下这两个问题:
如果不启动容器却想访问数据该怎么办?
容器被销毁或损坏,数据也就消失了,这合理吗?
是的,我想我们的答案应该是一样的,容器和数据不应该被绑定在一起。为此,Docker 提供了两类数据管理的方式:
挂载宿主机目录或文件;
使用数据卷;
本节,我们将介绍如何将宿主机的目录或文件挂载到 Docker 容器。
1. 挂载宿主机目录
我们可以将宿主机的目录,挂载到容器内,容器与宿主机的目录可以实时共享。在宿主机上执行如下命令:
# 新建一个目录mkdir -p ~/mydir/tmp# 在目录中新建一个文件,填充内容 hello dockerecho hello docker > ~/mydir/tmp/text.txt
然后新建一个容器 busyBox,将 /mydir/tmp
目录挂载到容器的 /tmp/
目录:
docker run -d -it --name busyBox -v ~/mydir/tmp/:/tmp/ busyBox
docker exec -it busyBox cat /tmp/text.txt
如图所示:
2. 挂载宿主机文件
我们也可以将宿主机的文件挂载到容器内,实现文件的共享。新建一个容器 busyBox2,将 /mydir/tmp/text.txt
文件挂载到容器的 /tmp/text.txt
:
docker run -d -it --name busyBox2 -v ~/mydir/tmp/text.txt:/tmp/text.txt busyBox
docker exec -it busyBox2 cat /tmp/text.txt
如图所示:
3. 小结
通过挂载宿主机的目录或文件,可以在宿主机和容器间方便地共享数据,包括将提前准备好的配置文件挂载到容器,或者在开发调试过程中将代码移入 Docker 环境试运行等。