docker管理数据
docker 提供三种不同方式,将数据从docker主机挂载到容器中
-
(1)卷(volumes),volumes 卷存储在Docker管理的主机文件系统的一部分中 (/var/lib/docker/volumes)中,完全由docker管理(推荐)
-
(2)bind mount 绑定挂载,可以将主机上的文件或目录挂载到容器中。
-
(3)tmpfs 仅存储在主机系统的内存中,而不会写入主机的文件系统
1,数据卷容器 volumes
-
docker volume
ls 列出本地可用数据卷 create volume名 创建一个数据卷,若不指定名称,则随机生成一个名称
(1)创建卷
- docker volume create volume名
(2)挂载卷
-
Ps: --mount
- 由多个键值对组成,键值对之间由逗号分隔。例如:type=volume,source=volume1,destination=/volume1,ro=true。
- type,指定类型,可以指定为 bind,volume,tmpfs。
- source,当类型为 volume 时,指定卷名称,匿名卷时省略该字段。当类型为 bind,指定路径。可以使用缩写 src。
- destination,挂载到容器中的路径。可以使用缩写 dst 或 target。
- ro 为配置项,多个配置项直接由逗号分隔一般使用 true 或 false。
- 由多个键值对组成,键值对之间由逗号分隔。例如:type=volume,source=volume1,destination=/volume1,ro=true。
———————————————————————————————————
-
(1
docker container run \ -it \ -it 交互模式 --name shiyanlou001 \ 自命名容器 -v volume1:/volume1 \ 指定卷volume 将名volume1的卷挂载到,容器的 /volume1中 --rm ubuntu /bin/bash 运行bash,退出后自动删除容器
-
(2
docker container run \ -it --name shiyanlou002 \ --mount type=volume,src=volume1,target=/volume1 \ type:挂载类型 src:源数据卷 target:挂载目录 --rm ubuntu /bin/bash
-
(3
不同容器可以继承同个volume,使用参数run 参数: --volumes-from volume名 继承volume卷
———————————————————————————————————
2,绑定挂载
-
若目录不存在,则会自动创建该目录
-
(1 volume
docker container run \ -it \ -v /home/shiyanlou:/home/shiyanlou \ -v 主机目录地址:容器目录地址 --name shiyanlou003 \ --rm ubuntu /bin/bash
-
(2 --mount
docker container run \ -it \ --mount type=bind,src=/home/shiyanlou,target=/home/shiyanlou \ type:挂载类型 src:源目录 target:目标目录 --name shiyanlou004 \ --rm ubuntu /bin/bash
3,临时文件系统tmpfs
-
只主机的内存中,当内存停止时,相应的数据就回被移除
docker run \ -it \ --mount type=tmpfs,target=/test \ --name shiyanlou008 \ --rm ubuntu bash
4,数据备份
docker container run \
--volumes-from ShiyanlouVolume \
-v /home/shiyanlou/backup:/backup \ 挂载目录到容器中
ubuntu tar cvf /backup/backup.tar /vdata/ 打包数据,到挂载目录中
5,数据恢复
docker container run \
--volumes-from ShiyanlouVolume \
-v /home/shiyanlou/backup:/backup \
ubuntu tar xvf /backup/backup.tar -C /
与数据备份道理一致