1.容器数据卷

如果数据都在容器内,一旦容器被删除,数据则会全部丢失。容器数据卷技术可以将容器产生的数据“存储”在宿主机上。

数据卷的设计目的在于数据的持久化,完全独立于容器的生命周期,因此,docker不会在容器删除时删除其挂载的容器卷,也不会存在类似垃圾收集机制,对容器引用的容器卷进行处理。

 

2.如何使用

//方式1:使用 -v命令
docker run -it -v [主机目录:容器内目录]

 

3.匿名挂载

docker run -d -P  --name nginx01 -v /etc/nginx   #-v 只指定了容器内目录,没有指定宿主机目录

docker volume ls #查看所有volume挂载情况

  

4.具名挂载

docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx nginx  #具名挂载 -v 卷名:容器内目录

docker volume inspect juming-nginx

#输出
[
    {
        "CreatedAt":"2021-07-26T15:45:01+08:00",
        "Driver":"local",
        "Labels":null,
        "Mountpoint":"/var/lib/docker/volumes/juming-nginx/_data",
        "Name":"juming-nginx",
        "Options":null,
        "Scope":"local"
    }
]


#备注
docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx:ro nginx
docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx:rw nginx

ro,rw代表读写权限
ro  readonly 一旦指定为ro,文件只能在宿主机侧修改,在容器内无法进行修改
rw  readwrite

总结:

容器卷作用:

1)容器产生数据的持久化和同步2)容器间数据共享

容器卷挂载类型

-v  [容器路径]           #匿名挂载
-v [卷名:容器内路径]    #具名挂载
-v [/宿主机路径:容器内路径] #指定路径挂载

 

注意事项:

1.数据卷在容器启动时初始化,如果容器使用的镜像在挂载点包含了数据,这些数据会拷贝到新初始化的数据卷中
2.数据卷可以在容器之间共享和重用
3.可以对数据卷里的内容直接修改
4.数据卷的变化不会影响镜像的更新
5.卷会一直存在,即使挂载的容器已经被删除。