Docker容器数据持久化

Docker容器数据持久化

Docker容器数据卷:volumes

1、什么是数据卷?

       数据卷是经过特殊设计的目录,可以绕过联合文件系统,为一个或者多个容器提供访问,数据卷设计的目的,在于数据的永久存储,它完全独立于容器的生存周期,因此,docker不会在容器删除时删除其挂载的数据卷,也不会存在类似的垃圾收集机制,对容器引用的数据卷进行处理,同一个数据卷可以只支持多个容器的访问。

        volumes: 是官方比较推荐也是大型的集群比较常见的一种方式.可以在宿主机或者云端或者在某一个区域创建一块磁盘专门存放容器里的数据或文件,volumes是Docker持久化数据的最好方式,因为与容器的耦合度最低,多个容器可以同时访问一个volumes

2、数据卷的特点

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

3、数据卷常用命令

创建数据卷

[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容器数据持久化_第1张图片

查看数据卷详细信息:

命令格式: docker volume inspect 卷名

[root@zch01 ~]# docker volume inspect 5d0ffa3f7a3fd6f401f8d9cfdc46623195afce95c5c309d00d10cb65a65bb38e

Docker容器数据持久化_第2张图片

容器添加数据卷

[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:宿主机目录的操作权限不限

4、数据卷的使用

编写DockerFile文件使用数据卷构建镜像

[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

你可能感兴趣的:(Docker技术分享,docker,容器,运维,数据卷,volumes,docker数据持久化)