目的:

  前言

  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. CCF 201709-3 JSON查询

    CCF 201709-3 JSON查询 试题编号: 201709-3 试题名称: JSON查询 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 JSON (JavaScript ...

  2. 第09组 Alpha冲刺(2/6)

    队名:观光队 组长博客 作业博客 组员实践情况 王耀鑫 过去两天完成了哪些任务 文字/口头描述 完成服务器连接数据库部分代码 展示GitHub当日代码/文档签入记录 接下来的计划 服务器网络请求. 还 ...

  3. js字符串连接

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> </head> ...

  4. 表格样式、表格css、

    .mytab{ border-collapse: collapse;}.mytab tr,.mytab td,.mytab th{ text-align: center; border: 1px so ...

  5. 冰多多团队-第三次Scrum会议

    冰多多团队-第三次Scrum会议 会议基本情况 会议时间:4月9日 21:30 - 21:45 会议地点:新主楼F座2楼沙发休息处 工作情况 团队成员 已完成任务 待完成任务 zpj 接入Action ...

  6. springboot框架在容器加载完成之后执行某个方法

    问题描述: 想在websocket实现的Handler中执行一些初始化操作,但是初始化操作使用到了@Autowired自动注入的变量,而且是保护类型.第一个想法是放到Handler构造函数中执行,但是 ...

  7. 苹果手机微信浏览器select标签选择完成之后页面不会自动回到原位

    说明: html默认select选择框控件在IOS的浏览器中 是底部弹出下拉选择. 这样到时页面位置错位,选择结束后对应不少元素的点击事件不响应. 这样看起来问题不大,但是选择完成之后点击确定提交弹出 ...

  8. 《Go语言实战》读书笔记

    <Go语言实战>中文版pdf 百度网盘: https://pan.baidu.com/s/1kr-gMzaPAn8BFZG0P24Oiw 提取码: r6rt 书籍源码:https://gi ...

  9. Vue 与 动态组件 import 的尝试

    <template> <component :is='fuck' :data='data'></component> </template> <s ...

  10. ubuntu16.04下安装运行PL-SLAM

    PL-SLAM是Ruben Gomez-Ojeda大神融合点和线特征SLAM的最新成果,并开放了源代码,本博文记录安装运行PL-SLAM遇到的一些问题. 1源代码地址 https://github.c ...