Docker容器数据卷:volumes
数据卷是经过特殊设计的目录,可以绕过联合文件系统,为一个或者多个容器提供访问,数据卷设计的目的,在于数据的永久存储,它完全独立于容器的生存周期,因此,docker不会在容器删除时删除其挂载的数据卷,也不会存在类似的垃圾收集机制,对容器引用的数据卷进行处理,同一个数据卷可以只支持多个容器的访问。
volumes: 是官方比较推荐也是大型的集群比较常见的一种方式.可以在宿主机或者云端或者在某一个区域创建一块磁盘专门存放容器里的数据或文件,volumes是Docker持久化数据的最好方式,因为与容器的耦合度最低,多个容器可以同时访问一个volumes
[root@zch01 ~]# docker volume create test run -itd -p 8081:80 -v test01:/usr/share/nginx/html nginx
命令格式: docker volume rm 卷名
[root@zch01 ~]# docker volume rm test
docker volume prune
[root@zch01 ~]# docker volume ls
命令格式: docker volume inspect 卷名
[root@zch01 ~]# docker volume inspect 5d0ffa3f7a3fd6f401f8d9cfdc46623195afce95c5c309d00d10cb65a65bb38e
[root@zch01 ~]# docker run -v /opt/data:/data -itd centos /bin/bash
/opt/data:为宿主机目录
/data:为容器的里的目录
宿主机的opt/data目录下创建的数据会同步到容器的/data目录下
[root@zch01 ~]# docker run --name test -v /opt/data:/data:ro -itd centos /bin/bash
data:ro: 添加只读权限,在容器中只能对data目录只读操作
/opt/data:宿主机目录的操作权限不限
[root@zch01 ~]# vi dockerfile
FROM centos
VOLUME ["/data1","/data2"]
CMD /bin/bash
构建镜像:
[root@zch01 ~]# docker build -t="volumeimage" .
启动容器:
[root@zch01 ~]# docker run --name volumetest -it volumeimage
进入容器查看会有:data1、data2两个目录
什么是数据卷容器:命名容器为挂载数据卷,其他容器通过挂载这个容器实现数据共享,挂载数据卷的容器,就叫做数据卷容器。
命令格式:docker run --volumes-from [container name]
构建镜像:
[root@zch01 ~]# vi dockerfile
FROM centos
VOLUME ["/data1","/data2"]
CMD /bin/bash
[root@zch01 ~]# docker build -t="datavolume" .
创建数据卷容器
[root@zch01 ~]# docker run --name data-volume -itd datavolume
datavolume:有两个目录data1、data2
进入到数据卷中可以查看
[root@zch01 ~]# docker exec -it data-volume /bin/bash
在前面已经创建好了数据卷容器,下面在创建新容器是直接挂在数据卷容器
使用命令选项:--volumes-from
[root@zch01 ~]# docker run --name zch01 --volumes-from data-volume -itd centos /bin/bash