• Docker 数据卷-Docker容器数据持久化方式


    以tomcat为例,若是我们需要启动一个docker tomcat 容器,并将我们的工程放进tomcat启动

    在没有数据卷的情况下,我们所采用的方式:

    利用dockerfile将工程拷贝到tomcat 的 webapps目录下创建一个新的镜像,然后通过这个新的镜像来创建容器并启动,以此部署。

    这种方式固然好用,但是却需要创建新的镜像,假如需要部署新的工程,又要创建新的镜像。很麻烦

    而且,这种方式会造成重复写的问题,就是我们的工程文件实质上在docker容器和宿主机上写入了两次。造成性能损耗。

    还有一个最问题就是,当我们在启动的工程中进行,将文件上传到服务器的操作,实际上我们的文件时上传到了docker容器中,而当容器被删除时,我们所上传的文件就丢失了。这就造成了数据无法持久化的问题。

    那么数据卷是如何解决这个问题的呢?

    首先演示一下数据卷的使用方式:

    创建 index.html 文件,并写入 hello Docker!

    root@ubuntu_server:/usr/local/docker/tomcat/ROOT# echo hello Docker! >index.html

    启动以数据卷方式启动官方tomcat镜像

    docker run -p8082:8080 -d --name tomcat4 -v /usr/local/docker/tomcat/ROOT:/usr/local/tomcat/webapps/ROOT tomcat:jdk8

    如上命令中 可以看到 同以往启动docker容器的命令不同之处在于 加了 这串 -v /usr/local/docker/tomcat/ROOT:/usr/local/tomcat/webapps/ROOT

    这就是数据卷的使用方式,通过这串命令,我们将tomcat容器中的webapps/ROOT 目录内容,替换为 我们这宿主机上创建的/ROOT 目录内容。

    实际上也没有替换只是将宿主机上这个文件夹创建为数据卷,然后将 tomcat容器上的/ROOT目录指向了这个数据卷。

    通过这种方式,当我们修改了容器上该目录内容时,数据卷的内容也会改变,这就实现了容器数据的持久化。



  • 相关阅读:
    网络相关配置
    RestTemplate 工具类以及拦截器配置打印调用日志
    Redis(2)九大数据类型及落地案例
    JUC(7)ThreadLocal
    JUC(5)原子类
    JUC(6)LockSupport
    JUC(4)Volatile
    JUC(3)Java内存模型JMM
    JUC(1)说说Java“锁”事
    JUC(2)线程中断机制
  • 原文地址:https://www.cnblogs.com/yinjing/p/12292077.html
Copyright © 2020-2023  润新知