指定本地文件夹地址 /xxx/xxx/Desktop/Zi/mDataVolume:
指定容器中对应文件夹 /mDataVolumeContainer
通过指定两个文件夹可以实现容器和本地文件的共享
我们在容器中的 mDataVolumeContainer 目录下创建 index.html
然后通过 cat 命令查看 index.html
我们使用 docker inspect ubuntu 查看容器和本地文件夹的绑定关系 Binds
使用 exit 退出运行容器,然后看一看当再次启动容器看在容器对应目录中刚刚共享文件是否还存在。
这条命令 docker ps -l 是现实上一次运行的容器,也就是刚才我们关闭的容器。然后我们可以查看容器 ID。
然后使用 start 启动该镜像。
然后我们使用 attach 命令来进入镜像工作目录
在汪汪关闭该容器后,我们在本地 mDataVolume 创建又创建了 style.css ,我们在重新启动容器,源举发现这个 style.css 已经同步到容器的 mDataVolumeContainer 目录下。
如果在容器目录后面添加 :ro ,目录是只读,困裂仔这样我们就无法在容器目录中对本地目录创建文件进行修改。
声明:所有的实验示例大部分来自《learn-docker-in-a-month-of-lunches》的作者Elton Stoneman,但运行结腊祥果并不都是照搬,大部分实验结果可能唯轮与原书不同
到目前为止,你应该已经在容器上发现了这么一个特点:你每次运行一个新的容器,容器的内的任何文件都回归初始了,你乍一听会觉得这不是挺好的嘛,这样会保证每一个新运行的容器不轮山搏论在何时不论在何地都从同一个状态开始运行。但你有没有想过这么一种情况,你的容器存储了一些重要信息在容器内的文件系统里,但是这时因为软件升级,你的镜像也更新了,你必须以新的镜像去运行新的容器,也就是说你得关停老的容器,那么这些重要数据岂不是丢失了?
不必担心,强大的Docker早就想到了这一点,它们给出了Docker Volumn和Docker Bind两种文件共享方式,以适应你数据持久化的需求。
不过在此之前,我们先来讨论一下Docker容器的文件系统结构。
Docker会将所有的文件系统源合并在一起呈现给Docker容器,而Docker容器能看到只是一个普普通通的块存储设备,Docker称这样的系统为union filesystem,下图是union filesystem的一个基本组成结构:
参考文档:
[1] learn-docker-in-a-month-of-lunches
[2] 官方文档
附:
[1] Elton Stoneman的github项目
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)