目的:

  前言

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

  数据卷

  数据卷容器


前言

Docker 数据管理

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

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

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


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

数据卷容器(Data Volume Containers 使用特定容器维护数据卷
也有最原始的方法,说白了就是复制,宿主机和容器内容不交互的


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

我们先来讲讲最原始copy方法怎么用吧:

  把宿主机文件 copy 到Docker容器内

  docker cp 需要拷贝的文件或者目录

我们在宿主机中ht文件夹下创建一个文件hdn.txt

在里面添加一句话,并且复制到docker容器中:

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

docker cp /ht/docker/ mycentos001:/javaxh/software

我们可以看内容复制过来了,因为是中文之所以乱码了。

我们在里面加一段代码:

我们在去本机上看依旧是当时输入的那句代码:

因为这两个文件是单独的个体数据不会交互,所以不推荐这个。

一般官方不推荐这种做法,虽然他也可以管理但是数据不交融,基本用不到。


数据卷

数据卷(data volume,注:位置在/var/lib/docker/volumes)是容器可以访问,但是位置不在root文件系统中的一个目录。为了能让容器之间可以共享数据,Docker让“卷”(volume)可以绕过Docker镜像的层叠机制。容器中所有对镜像的改变全部都直接存储。每个容器都有固定的运行目录在/var/lib/docker目录下;而每个容器卷的数据则默认单独存储在/var/lib/docker/volumes/目录底下。 docker run命令的-v选项能够实现容器间数据卷中数据的互相拷贝。

 ·数据卷相关操作:

1.创建数据卷

 docker volume create my-vol

此时,数据卷默认会放到/var/lib/docker/volumes路径下,会发现所新建的数据卷位置,查看命令如下:

## 参数可以为数字“1”,字母L:大小写均可,但效果不一样

     ls - /var/lib/docker/volumes

 2.查看所有的数据卷

docker volume ls

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

  docker volume inspect my-vol

4.删除一个volume

    docker volume rm my-vol

注1:数据卷 是被设计用来持久化数据的,它的生命周期独立于容器,Docker不会在容器被删除后自动删除数据卷,

并且也不存在垃圾回收这样的机制来处理没有任何容器引用的数据卷,无主的数据卷可能会占据很多空间,

所以要及时删除

## 挂载数据卷,最好是通过run而非create/start创建启动容器

## create/start命令创建启动容器后,再挂载数据卷相当麻烦,要修改很多配置文件,但并非不可以

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

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

  效果:

    

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

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

  效果:

  

  注1:linux命令结尾加斜杠有什么用

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

注2:source=my-vol,target=/webapp

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

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

注3: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:latest

数据卷容器

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

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

数据卷容器相关操作

1.新建数据卷容器

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

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

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

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

随便在一个容器中创建一个文件kkk.txt

谢谢观看!!

Docker之数据卷(Data Volumes)操作的更多相关文章

  1. Docker数据管理-数据卷 data volumes和数据卷容器data volumes containers的使用详解

    此文来源于:https://yq.aliyun.com/ziliao/43471 参考原文件之外,做了些修改. Volume数据卷是Docker的一个重要概念.数据卷是可供一个或多个容器使用的特殊目录 ...

  2. docker数据卷(Data Volumes)

    Docker宿主机和容器之间文件拷贝docker copy 前言: Docker 数据管理 在生产环境中使用 Docker ,往往需要对数据进行持久化,或者需要在多个容器之间进行 数据共享,这必然涉及 ...

  3. 数据卷(Data Volumes)

    Docker宿主机和容器之间文件拷贝docker copy 前言: Docker 数据管理 在生产环境中使用 Docker ,往往需要对数据进行持久化,或者需要在多个容器之间进行 数据共享,这必然涉及 ...

  4. Docker 容器数据卷(Data Volume)与数据管理

    卷(Volume)是容器中的一个数据挂载点,卷可以绕过联合文件系统,从而为Docker 提供持久数据,所提供的数据还可以在宿主机-容器或多个容器之间共享.通过卷,我们可以可以使修改数据直接生效,而不必 ...

  5. docker数据卷之持久化操作

    docker Docker三大核心组件:(运行起来的镜像就可以称作容器) Docker 镜像--Dcoker images:类比与类 Docker 仓库--Docker registeries: Do ...

  6. docker基础---数据卷volumes

    1.数据卷 数据卷是一个可供一个或多个容器使用的特殊目录,它绕过 UFS,可以提供很多有用的特性: 数据卷可以在容器之间共享和重用 对数据卷的修改会立马生效 对数据卷的更新,不会影响镜像 卷会一直存在 ...

  7. Docker数据管理(数据卷&数据卷容器)

    生产环境中使用Docker的过程中,往往需要对数据进行持久化,或者需要在多个容器之间进行数据共享,这必然涉及容器的数据管理操作. 容器中管理数据主要有两种方式: 数据卷(Data Volumes):容 ...

  8. Docker容器数据卷-Volume详解

    Docker中的数据可以存储在类似于虚拟机磁盘的介质中,在Docker中称为数据卷(Data Volume).数据卷可以用来存储Docker应用的数据,也可以用来在Docker容器间进行数据共享.数据 ...

  9. Docker学习笔记 - Docker的数据卷

    一.什么是数据卷? 数据卷是一个可供一个或多个容器使用的特殊目录,它绕过 UFS,可以提供很多有用的特性: 数据卷可以在容器之间共享和重用 对数据卷的修改会立马生效 对数据卷的更新,不会影响镜像 数据 ...

随机推荐

  1. P5055 【模板】可持久化文艺平衡树 可持久化fhqtreap

    P5055 [模板]可持久化文艺平衡树 链接 luogu 思路 可持久化fhq-treap套一套就行了,pushdown和split都要可持久化,但merge不用可持久.以前以为很难一直没看,就是个板 ...

  2. 切比雪夫定理(Chebyshev's theorem)与经验法则(Empirical Rule)

    切比雪夫定理(Chebyshev's theorem):适用于任何数据集,而不论数据的分布情况如何. 与平均数的距离在z个标准差之内的数值所占的比例至少为(1-1/z2),其中z是大于1的任意实数. ...

  3. 一起学Makefile(六)

    命令的回显: 通常,make在执行命令之前都会把执行的命令进行输出,例如: 关闭命令回显有以下几种方式: 每个需要关闭回显的命令行之前加上”@”符号: 执行make时机上参数-s 或 –slient进 ...

  4. 经典算法(四) 数组相关 & 螺旋矩阵 & 数字大小写转换 & 字符串相关

    一.求所有子数组的和的最大值 public static void main(String[] args) { int[] a = { 1, -2, 3, 10, -4, 7, 2, -5 }; Fi ...

  5. linux Ubuntu Centos 增加 TCP 连接数

    https://blog.csdn.net/c359719435/article/details/80300433 查看max conn: cat /proc/sys/net/core/somaxco ...

  6. centos7安装yum

    由于不小心把自带的yum给卸载了,卸载命令:rpm -qa yum: 在浏览器打开链接:http://mirrors.163.com/centos/6/os/x86_64/Packages/下载这四个 ...

  7. Mockito 的用法

    本文为博主原创,转载请注明出处: Mockito 是一个基于MIT协议的开源java测试框架. Mockito区别于其他模拟框架的地方主要是允许开发者在没有建立“预期”时验证被测系统的行为.对于moc ...

  8. js数组、对象处理

    js arry: var arry = []; js object: var obj = {}; obj定义属性: obj.filename=''; obj.id=''; 把 obj 添加到 arry ...

  9. webuploader超时时间timeout设置

    参考:http://www.codingwhy.com/view/841.html 备注下!

  10. python非官方扩展库

    https://www.lfd.uci.edu/~gohlke/pythonlibs/ 安装方法: 1.下载自己需要的库文件 例如:Twisted-19.2.1-cp37-cp37m-win32.wh ...