您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

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

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

如果不启动容器却想访问数据该怎么办?

容器被销毁或损坏,数据也就消失了,这合理吗?

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

挂载宿主机目录或;

使用数据卷;

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

1. 挂载宿主机目录@H__31@

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

# 新建目录mkdir -p ~/mydir/tmp# 在目录中新建,填充 hello dockerecho "hello docker" >  ~/mydir/tmp/text.txt

然后新建容器 busy@R__2@,将 /mydir/tmp 目录挂载到容器的 /tmp/ 目录:

docker run -d -it --name busy@R__2@ -v ~/mydir/tmp/:/tmp/ busy@R__2@

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

确认查看容器对应的:

docker exec -it busy@R__2@ cat /tmp/text.txt

如图所示:

目录挂载

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

# 新建目录mkdir -p ~/mydir/tmp# 在目录中新建,填充 hello dockerecho "hello docker" >  ~/mydir/tmp/text.txt

然后新建容器 busy@R__2@,将 /mydir/tmp 目录挂载到容器的 /tmp/ 目录:

docker run -d -it --name busy@R__2@ -v ~/mydir/tmp/:/tmp/ busy@R__2@

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

确认查看容器对应的:

docker exec -it busy@R__2@ cat /tmp/text.txt

如图所示:

2. 挂载宿主机@H__31@

我们也可以将宿主机的挂载到容器内,实现的共享。新建容器 busy@R__2@2,将 /mydir/tmp/text.txt 挂载到容器的 /tmp/text.txt

docker run -d -it --name busy@R__2@2 -v ~/mydir/tmp/text.txt:/tmp/text.txt busy@R__2@

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

确认容器对应的:

docker exec -it busy@R__2@2 cat /tmp/text.txt

如图所示:

挂载

Tips:使用 docker rm -f busy@R__2@ busy@R__2@2 移除不再使用的容器。

我们也可以将宿主机的挂载到容器内,实现的共享。新建容器 busy@R__2@2,将 /mydir/tmp/text.txt 挂载到容器的 /tmp/text.txt

docker run -d -it --name busy@R__2@2 -v ~/mydir/tmp/text.txt:/tmp/text.txt busy@R__2@

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

确认容器对应的:

docker exec -it busy@R__2@2 cat /tmp/text.txt

如图所示:

Tips:使用 docker rm -f busy@R__2@ busy@R__2@2 移除不再使用的容器。

3. 小结@H__31@

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

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


联系我
置顶