系列14 docker 数据管理 下(以及进入容器)
一.数据卷容器
如果用户需要在多个容器之间共享一些持续更新的数据,最简单的方式是使用数据卷容器。数据卷容器也是一个容器,但是它的目的是专门提供数据卷给其它容器挂载。
首先创建一个数据卷容器dbdata,并在其中创建一个数据卷挂载到/dbdata:
[root@k8s-host opt]# docker run -it -v /dbdata --name dbdata ubuntu root@9fbad9a78ac8:/# ls bin boot dbdata dev etc home lib lib32 lib64 libx32 media mnt opt proc root run sbin srv sys tmp usr var root@9fbad9a78ac8:/# cd dbdata root@9fbad9a78ac8:/dbdata#
通过-v 将当前工作目录安装到容器中。 在容器中可以看到创建了一个dbdata文件夹。这个文件夹用来做多个容器之间的共享目录。
注意:上篇中容器数据进行持久化, 数据文件是挂载映射在宿主本机目录,而这里是专门创建一个容器,用来进行数据持久化以及容器之间数据共享。
这里创建容器是基于ubuntu镜像。
然后其它容器中使用--volumes-from来挂载dbdata容器中的数据卷,例如创建db1和db2两个容器,并从dbdata容器挂载数据卷:
[root@k8s-host /]# docker run -it --volumes-from dbdata --name db1 ubuntu root@58a3f566c64d:/# cd dbdata root@58a3f566c64d:/dbdata# exit exit [root@k8s-host /]# docker run -it --volumes-from dbdata --name db2 ubuntu root@fd7b5462fb65:/# cd dbdata root@fd7b5462fb65:/dbdata# exit exit
上面db1和db2二个容器共享dbdata容器中的dbdata目录。在dbdata容器中创建一个test文件,在db1和db2容器中都能看到,如下所示:
查看容器id, 容器退出了(是后台进程,待分析)
[root@k8s-host /]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES fd7b5462fb65 ubuntu "/bin/bash" 4 minutes ago Exited (0) 3 minutes ago db2 58a3f566c64d ubuntu "/bin/bash" 4 minutes ago Exited (0) 4 minutes ago db1 9fbad9a78ac8 ubuntu "/bin/bash" 14 minutes ago Exited (0) 13 minutes ago dbdata
会话窗口A , 启动dbdata容器,创建一个test文件,如下所示:
[root@k8s-host /]# docker start 9fbad9a78ac8 9fbad9a78ac8 [root@k8s-host /]# docker exec -it 9fbad9a78ac8 /bin/bash root@9fbad9a78ac8:/# cd /dbdata root@9fbad9a78ac8:/dbdata# touch test root@9fbad9a78ac8:/dbdata# ls test root@9fbad9a78ac8:/dbdata#
会话窗口B, 启动db2容器,可以查看到共享目录文件,如下所示:
[root@k8s-host ~]# docker start fd7b5462fb65 fd7b5462fb65 [root@k8s-host ~]# docker exec -it fd7b5462fb65 /bin/bash root@fd7b5462fb65:/# cd dbdata root@fd7b5462fb65:/dbdata# ls test root@fd7b5462fb65:/dbdata#
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下
2018-12-27 redis 系列27 Cluster高可用 (2)