首页 > 服务器 > Docker 入门教程 > Docker 数据管理 - 挂载目录或文件

Docker 数据管理 - 挂载目录或文件

通过前面小节的学习我们知道: 使用Docker时,产生的数据默认是保存到容器的UnionFS的读写层中的 。那么,我们不妨思考下这两个问题:

  1. 如果不启动容器却想访问数据该怎么办?
  2. 容器被销毁或损坏,数据也就消失了,这合理吗?

是的,我想我们的答案应该是一样的,容器和数据不应该被绑定在一起。为此,Docker 提供了两类数据管理的方式:

  1. 挂载宿主机目录或文件;
  2. 使用数据卷;

本节,我们将介绍如何将宿主机的目录或文件挂载到 Docker 容器。

1. 挂载宿主机目录

我们可以将宿主机的目录,挂载到容器内,容器与宿主机的目录可以实时共享。在宿主机上执行如下命令:

# 新建一个目录
mkdir -p ~/mydir/tmp
# 在目录中新建一个文件,填充内容 hello docker
echo "hello docker" >  ~/mydir/tmp/text.txt

然后新建一个容器 busybox,将 /mydir/tmp 目录挂载到容器的 /tmp/ 目录:

docker run -d -it --name busybox -v ~/mydir/tmp/:/tmp/ busybox

Tips :挂载宿主操作系统目录的参数是 -v <宿主机目录路径>:<容器目录路径>

确认查看容器对应的文件内容:

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

Tips :挂载宿主操作系统目录的参数是 -v <宿主机文件路径>:<容器文件路径>

确认容器对应的文件内容:

docker exec -it busybox2 cat /tmp/text.txt

如图所示:
图片描述

文件挂载

Tips :使用 docker rm -f busybox busybox2 移除不再使用的容器。

3. 小结

通过挂载宿主机的目录或文件,可以在宿主机和容器间方便地共享数据,包括将提前准备好的配置文件挂载到容器,或者在开发调试过程中将代码移入 Docker 环境试运行等。

本文来自互联网用户投稿,不拥有所有权,该文观点仅代表作者本人,不代表本站立场。
访问者可将本网站提供的内容或服务用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯本网站及相关权利人的合法权利。
本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站,邮箱:80764001@qq.com,予以删除。
© 2023 PV138 · 站点地图 · 免责声明 · 联系我们 · 问题反馈