一、数据卷特点
1、数据卷数据不继承镜像
2、数据卷不依赖于容器,生命周期不受容器控制
二、创建数据卷
1、创建容器时一同创建数据卷
使用 docker create 或 docker run 创建容器时,通过 “-v“ 参数向容器中挂载一个数据卷
$ sudo docker create --name web -v /html nginx
创建了一个/html 的数据卷,一般情况下,需要同时挂载多个数据卷到同一个容器,多次使用-v参数,就可以分别挂载这些需要的数据卷。
$ sudo docker create --name web -y /html -v /var/log/nginx nginx
2、还可以使用 Docker CLI中专有的创建数据卷的 docker volume create 命令来创建数据卷
[root@localhost nginx]# docker volume create be68feccfabedc2f680b8845f867b52512dffcda4b66154545711ffdf1b944e7
返回数据卷的名称,随机产生长度为64位的字符串,可以通过--name参数自定义名称
[root@localhost nginx]# docker volume create --name html html
注意,如果要使用数据卷名称,必须要输入64个字符完整信息
三、Docker volume inspect 查看数据卷信息
创建完成后,可以通过 docker volume inspect命令查看数据卷基本信息
[root@localhost nginx]# docker volume inspect html [ { "CreatedAt": "2019-08-19T14:05:37+08:00", "Driver": "local", "Labels": {}, "Mountpoint": "/var/lib/docker/volumes/html/_data", "Name": "html", "Options": {}, "Scope": "local" } ]
数据卷就是放置在数据主机内的一个特殊目录,经过docker封装,程序在容器中无法判断数据卷到底从何处挂载。
四、挂载数据卷
通过创建容器而创建的数据卷,会自动挂载到到容器之中。
通过docker volume create 命令创建的数据卷,可以使用 docker create 或者 docker run命令时,采用-v <name>:<dest>形式实现数据卷的挂载
$ sudo docker create --name web -v html:/html nginx
-v <name>:<dest>
name 表示数据卷名称,一般建议使用自定义的名称
dest表示数据卷挂载到容器中的路径,如果容器中对应的目录已经存在,那么挂载操作会把原有的目录暂时隐藏,数据卷会被替换。
创建容器时,可以使用 -v <src>:<dest>这种参数形式,挂载宿主机中的目录到容器中.
$ sudo docker create --name web /var/html:/html -v /var/log/nginx:/var/log/nginx nginx
五、删除数据卷
查看数据卷
[root@localhost ~]# docker volume list DRIVER VOLUME NAME local 9ca031188ec568f86157b19f08c551ef0d7f48283094e1518036490097dc4671 local 6796c3a6ec750823fa2b0cc3d9bb4ba24201cd26cfb21772ef8527bf2cb5e824 local 87617871478b478615b3d2a98c5253c56e3483629bec5d144c6cb2df75b9908a local b61d0e183946d7e27b942695d9786933484337146f73d927f750b170ff2c237f local b8632a46c89dd0be3b207716fa52a44413f41c8a75c6a76dd0a0e4e977b5193c local be68feccfabedc2f680b8845f867b52512dffcda4b66154545711ffdf1b944e7 local d94538cd97b3bc78ad82f22af6a8a39091e4dd6144a7cff889b6b85fc9dd4de1
删除数据卷
[root@localhost ~]# docker volume rm d94538cd97b3bc78ad82f22af6a8a39091e4dd6144a7cff889b6b85fc9dd4de1
推荐另外一种删除数据卷方式,随着容器一起删除,传入参数-v 一同删除容器使用的数据卷
$ sudo docker rm -v web