计算机网络/计算机科学与应用/系统/运维/开发

Docker 数据卷与网络

一、数据卷特点

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



Docker

再长的路,一步步也能走完,再短的路,不迈开双脚也无法到达

评论

^