Docker数据卷

Docker宿主机和容器之间文件拷贝docker copy

Docker 数据管理

   在生产环境中使用 Docker ,往往需要对数据进行持久化,或者需要在多个容器之间进行

   数据共享,这必然涉及容器的数据管理操作 

容器中的管理数据主要有两种方式:

   数据卷 Data Volumes 容器内数据直接映射到本地主机环境;

   数据卷容器(Data Volume Containers 使用特定容器维护数据卷

  当然还有最原始的copy方式,这个也是管理数据的方式,但是基本不会用到

最原始的copy方式管理数据:

宿主机文件 copy to 容器内

docker cp 需要拷贝的文件或者目录   容器名称:容器目录

 实例:

 docker cp /path/docker/ccc.txt mycentos:/cjh/software

 

容器内 copy to 宿主机

docker cp 容器名称:容器目录    宿主机目录

 实例:

docker cp mycentos:/cjh/software/ddd.txt  /path/docker/

 

数据卷

数据卷(Data Volumes)

   数据卷是一个可供一个或多个容器使用的特殊目录,它将主机操作系统目录直接映射进容器,

   它可以提供很多有用的特性:

   1.数据卷 可以在容器之间共享和重用

   2.对数据卷的修改会立马生效

   3.对数据卷的更新,不会影响镜像

   4.数据卷 默认会一直存在,即使容器被删除

     数据卷相关操作

   1.创建数据卷

    docker volume create my-vol

   2.查看所有的数据卷

     docker volume ls

 3.查看指定数据卷的详细信息(显示一个JSON格式的数据)

     docker volume inspect my-vol

  4.删除一个volume  

  docker volume rm my-vol

数据卷 是被设计用来持久化数据的,它的生命周期独立于容器,Docker不会在容器被删除后自动删除数据卷,并且也不存在垃圾回收这样的机制来处理没有任何容器引用的数据卷,无主的数据卷可能会占据很多空间,所以要及时删除

  5.启动一个挂载数据卷的容器

 docker run -d 
       -it 
       --name tomcat01 
       --mount source=my-vol,target=/webapp 
       centos:7

    注意:此行命令执行后的效果是,宿主机路径/var/lib/docker/volumes/my-vol/_data与tomcat01容器路径/webapp完成映射

docker run -d 
       -it 
       --name tomcat02 
       --mount type=bind,source=/cjh/data,target=/root/webapp02 
       centos:7    

linux命令结尾加斜杠有什么用加了“”意为将最后的回车换行给注释了,系统理解为命令还没有结束,因而是继续等待用户进行输入,直到读到结束符,如回车

source=my-vol,target=/webapp

          my-vol为要挂载的数据卷,如果数据卷不存在,docker会自动创建

         /webapp为容器上目录,如果目录不存在, Docke会自动创建

mount选项高级用法

          --mount选项的type参数支持三种类型的数据卷

          --mount标志:由多个名值对组成,逗号分隔,每个键值由 <key> = <value> 元组组成

 1.type=volume普通数据卷(默认即这种类型),映射到主机/var/lib/docker/volumes路径下;

  --mount type=volume,source=my-vol,target=/webapp

  注:这是type的默认值

 2.bind:绑定数据卷,映射到主机指定路径下;

--mount type=bind,source=/webapp,destination=/webapp2

3.tmpfs :临时数据卷,只存在于内存中

docker run -d 
              -it 
              --name tmptest 
              --mount type=tmpfs,destination=/app 
              nginx:lates

数据卷容器

数据卷容器

   如果用户需要在多个容器之间共享一些持续更新的数据,最简单的方式是使用数据卷容器。

   数据卷容器也是一个容器,但是它的目的是专门提供数据卷给其他容器挂载

   数据卷容器相关操作

   1.新建数据卷容器

  docker run -di --name db_data -v /db_data centos:7

注:-v 后面接的共享数据真实存放路径

2.用容器db1、db2测试数据卷容器是否可用

db1:

    docker run -di --name db1 --volumes-from db_data centos:7
     docker exec -it db1 bash

db2:

docker run -di --name db2 --volumes-from db_data centos:7
     docker exec -it db2 bash

 随便创建一个bbb.txt文件就可以查看效果了  

首先我们在db1里面创建bbb.txt文件,然后加入db2发现数据是一样的 

原文地址:https://www.cnblogs.com/chenjiahao9527/p/11963028.html