Docker数据卷之进阶篇
【容器之间数据共享,修改同步】
配置如下:
- type 指定挂载方式,我们这里用到的是 volume,其实还可以有 bind 和 tmpfs。
Volunme:这个目录只有Docker可以管理,其他进程不能修改。如果想持久保存容器的 应用数据,Volumes是Docker推荐的挂载方式。
Bind:容器内的数据被存放到宿主机文件系统的任意位置,甚至存放到一些重要的系统 目录或文件中。除了Docker之外的进程也可以任意对他们进行修改;
tmpfs:容器的数据只会存放到宿主机的内存中,不会被写到宿主机的文件系统中,因 此不能持久保存容器的应用数据。
- volume-driver 指定挂载数据卷的驱动程序,默认值是 local。
- source 指定挂载的源,对于一个命名的数据卷,这里应该指定这个数据卷的名称。在使用时可以写 source,也可以简写为 src。
- destination 指定挂载的数据在容器中的路径。在使用时可以写 destination,也可以简写为 dst 或 target。
- readonly 指定挂载的数据为只读。
- volume-opt 可以指定多次,用来提高更多的 mount 相关的配置。
- Target=/data,挂载到容器/data目录,没有则自动创建表
创建挂载卷:docker volume create my-data
卷的详细信息:docker volume inspect my-data
数据卷列表:docker volume ls
移除卷:docker volume rm my-data
清除无主的数据卷:docker volume prune
我们可以使用-f或--force选项强行删除正在使用中的容器。然后再删除卷:
docker container rm –f $(docker container ls -aq)
docker volume rm my-data
挂载数据卷命令:[默认目录:/var/lib/docker/volumes/my-data]
1.docker run -id --mount type=volume,source=my-data,target=/data ubuntu /bin/bash
2.docker run -it -v /home/data/:/home/data/:ro --name test ubuntu:16.04 bin/bash
容器目录挂载本地目录:[冒号前为宿主机目录,冒号后为容器目录]
默认挂载的路径权限为读写:[ro表示readonly只读]
注意:
1.如果本地数据卷或者本地目录尚未创建,-v命令则会自动创建,--mount则会报错
2.如果是容器里的目录不存在,两者都会自动创建
3.--mount命令解析:
由多个键=值组成,
有type=bind/volume/tmpfs,(省略该字段则默认为volume)
可使用source/src=本机目录文件,(省略该字段则为匿名卷)
target/destination/dst=容器目录,
可指定readonly)