06-Docker存储卷

当容器被删除后,容器里面的数据相应的也一起删除,为了保证数据可持久化,需要将容器里面的目录,与宿主机某个目录形成映射关系。
有状态的应用(像mysql,redis)需要持久存储数据的;
有状态的应用(像tomcat)不需要持久存储的,在内存中保存数据,丢失了无所谓;
无状态的应用(各种反向代理服务器,例如,lvs),不需要持久存储的;
无状态需要持久存储:这种情况极少见。

Why Data Volume?

  • 关闭或重启容器,数据不受影响;但删除docker容器,其里面的数据更改,全部丢失;
  • 解决方案:volume,卷是容器某一个或多个目录,与宿主机的某目录绑定。
    在这里插入图片描述

Volume Type?

Docker有两种类型的卷,每种类型在容器中存在一个挂载点,但是在宿主机位置不同:

  • bind mount volume

    需要在宿主机和容器里面,各自指定路径,然后让其关联起来,
    #docker run -it --rm --name b2 -v /data/container/b2:/data busybox:latest
    #docker inspect b2
    注:/data/container/b2宿主机没有的话,会自动创建出来在映射的目录下面有任何编辑操作,相对应的目录下面都是发生变化。

  • docker-managed volume

    只需要指定容器里面的路径,而宿主机的路径不需要指定,由docker自行创建,
    #docker run -it --name b2 -v /data busybox
    在这里插入图片描述
    #docker inspect b2 ------查看容器具体信息
    在这里插入图片描述
    在宿主机这个目录下面,创建一个文件,发现,容器里面对应目录里面文件存在:
    在这里插入图片描述在这里插入图片描述
    在容器里面该目录下创建文件,宿主机也相对应存在:
    在这里插入图片描述

  • share volume
    两个容器可共享一个宿主机的目录,这样,在任何一个目录下面修改,都会同步到其他几个目录下面。
    多个容器的卷使用同一主机目录:
    #docker run -it --name c1 -v /data/volume/p1:/data/www/html busybox
    #docker run -it --name c2 -v /data/volume/p1:/data/www/html busybox
    复制使用其他容器的卷,在docker run 的时候使用–volumes-from
    #docker run -it --name c1 -v /data/volume/p1:/data/www/html busybox
    #docker run -it --name c2 --volumes-from c1 busybox

猜你喜欢

转载自blog.csdn.net/weixin_38753143/article/details/99308588
今日推荐