docker数据管理
一.创建数据卷volume
在这里存着
二、绑定数据卷
在用docker [container] run命令的时候,可以使用-mount选项来使用数据卷。
(1)volume:普通数据卷,映射到主机/var/lib/docker/volumes路径下;
(2)bind:绑定数据卷,映射到主机指定路径下
(3)tmpfs:临时数据卷,只存在于内存中。
下面使用training/webapp镜像创建一个Web容器,并创建一个数据卷挂载到容器的/opt/webapp目录:
出现下面的这个报错,我们得先创建才能做
用这个创建mkdir /webapp
因为各种原因弄不下来,我们先删掉吧
我们就用本地的镜像吧
还是终止状态的启动不起来
你得给他一个指令才能运行,还是删了吧,换另一个
换这个,我们可以看到我的32768跟80端口做了映射,然后挂载我把本地的web挂载了
我们随便选一个eg. 拷一个index.html到/webapp/里面去
然后进到容器里面去
注意:本地目录的路径必须是绝对路径,容器内路径可以为相对路径。如果目录不存在,Docker会自动创建。
Docker挂载数据卷的默认权限是读写(rw),用户也可以通过ro指定为只读
写进去了
我们本地里面也有了
如果让只读挂的话
docker run -d -P --name web -v /webapp:/opt/webapp:ro nginx:1.17.1(加个ro就行)
三、数据卷容器
多个容器共享一些数据的话,就叫数据卷容器
1.创建一个数据卷容器dbdata,并在其中创建一个数据卷挂载到/dbdata;
2.然后创建db1容器和db2容器
因为,容器db1和db2都挂载同一个数据卷到相同的/dbdata目录,三个容器任何一方在该目录下写入,其他容器都可以看到
在这个写错了删掉
改成这个
然后就可以了,发现在其他容器里也可以看见里面内容
3.可以多次使用--volumes-from参数来从多个容器挂载多个数据卷,还可以从其他已经挂载了容器卷的容器来挂载数据卷
这个db3没有运行
注意:使用--volumes-from参数所挂载数据卷的容器自身并不需要保持在运行状态
如果删除了挂载容器(包括dbdata、db1、db2),数据卷不会自动删除
因为还在挂载着呢,所以删的时候要带-v
四、利用数据卷容器来迁移数据
因为前面删了,我们现在重新弄,有了dbdata才能弄
1.备份
2.恢复
emmm有点问题
删一些重弄
加-it是保持进入到那个终端里面的,现在是空的
然后我们在另一个终端里面给他还原
ok成功